Leetcode7.Reverse_Integer

通过int num = x - x / 10 * 10获取x当前最后位。
注意INT_MAX/INT_MIN两个边界
通过比较倒数第二次数字与INT_MAX/INT_MIN大小关系,判断是否越界。
以正数为例:
在最后一次乘10之前,若当前数已经大于INT_MAX/10则越界。
,若当前数等于INT_MAX/10,则比较最后一位大小(INT_MAX末位为7),
若最后一位大于7则越界。

class Solution {
public:
    int reverse(int x) {
        int result = 0;
        while (x != 0)
        {
            int num = x - x / 10 * 10;
            x /= 10;
            if (result > INT_MAX / 10 || (result == INT_MAX / 10 && num > 7)) return 0;
            if (result < INT_MIN / 10 || (result == INT_MIN / 10 && num < -8)) return 0;
            result = result * 10 + num;

        }
        return result;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_42263831/article/details/82735251