欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【leetcode】7. Reverse Integer

程序员文章站 2022-07-15 14:38:23
...

题目:
Given a 32-bit signed integer, reverse digits of an integer.


思路:
这道题本身并不难,但是会出现溢出问题。你要保证转换后的数字不能溢出。而且,算法中任意一个变量溢出都会编译不通过。所以,用一个比较大的数存放sum,然后结合INT_MAX和INT_MIN来判断是否溢出。


代码实现:

class Solution {
public:
    int reverse(int x) {
        if (x == INT_MAX || x == INT_MIN){ // 对x进行溢出判断
            return 0;
        }
        if (x == 0){
            return 0;
        }
        long long sum = 0;
        while (x % 10 == 0){
            x /= 10;
        }
        while (x){
            long long tmp = sum*10;
            if (tmp > INT_MAX || tmp < INT_MIN){ // 运行时进行溢出判断
                return 0;
            }
            sum *= 10;
            sum += x % 10;
            x /= 10;
        }
        return sum;
    }
};

【leetcode】7. Reverse Integer


参考:https://www.cnblogs.com/qvq-/p/10738467.html