[LeetCode]7. Reverse Integer

原题链接:https://leetcode.com/problems/reverse-integer/description/

意思是对于给定的数字,调换最高位和最低位,次高位和次低位......然后输出。如果调换数位后超过了32位int表达范围就输出0。

我的提交(又不知道从哪位大佬博客看到,以后一定记下来说明出处,我自己代码溢出时出错):

class Solution {
public:
    int reverse(int x) {
        int result = 0;
        
        while(x != 0) {
            if (abs(result) > INT_MAX / 10) return 0;
            result = (result * 10) + (x % 10);
            x /= 10;
        }
        
        return result;
    }
};

思想:计算方法一般都是取余加前面结果*10,重点就是结果溢出时的处理,就是这一行代码:

if (abs(result) > INT_MAX / 10) return 0;

在下一次计算前,判断当前结果绝对值是不是大于INT_MAX / 10,从而预测是不是溢出。这个是在我自己做的时候没想到的(关于溢出处理我还写了超级长的判断,结果还是没通过测试用例)

总结:溢出处理

原文地址:https://www.cnblogs.com/qianzixuan1996/p/8288483.html