• LeetCode Reverse Integer


    递归主要有两个点,一个是它递归的过程是怎么样的,一个就是递归的边界。

    #include "pch.h"
    #include <iostream>
    using namespace std;
    class Solution {
        typedef long long LL;
        LL ret = 0;
        bool isOverFlow = false;
    public :
        int reverse(LL x) {
            if (x == 0 || isOverFlow) {
                return 0;
            }
            LL value = abs(x);
            ret = ret * 10 + value % 10;
            if (ret>INT_MAX) {
                isOverFlow = true;
            }
            reverse(x/10);
            return isOverFlow=true?0:(x>0?ret:-ret);
        }
    };

    #include "pch.h"
    #include <iostream>
    using namespace std;
    class Solution {
        typedef long long LL;
        LL ret = 0;
        bool isOverFlow = false;
    public :
        int reverse(LL x) {
            /*
            if (x == 0 || isOverFlow) {
                return 0;
            }
            LL value = abs(x);
            ret = ret * 10 + value % 10;
            if (ret>INT_MAX) {
                isOverFlow = true;
            }
            reverse(x/10);
            return isOverFlow=true?0:(x>0?ret:-ret);
            */
            LL value = abs(x);
            while (value!=0) {
                if (x == 0 || isOverFlow == true) {
                    return 0;
                }
                ret = ret*10+value % 10;
                if (ret > INT_MAX) {
                    isOverFlow = true;
                    return 0;
                }
                value = value / 10;
            }
            return isOverFlow ? 0 : (x > 0 ? ret : -ret);
        }
    };

  • 相关阅读:
    第一次作业
    第0次作业
    第14、15周作业
    第七周作业
    第六周作业
    第四周作业
    第三周作业
    第4次作业
    第3次作业
    第二次作业
  • 原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/10780697.html
Copyright © 2020-2023  润新知