7.反转整数 by 2018-04-22

2018-04-22  本文已影响0人  戴宏鹏
class Solution {
public:
    int reverse(int x) {
        int res = 0;
        while (x) 
        {
            if (res > INT_MAX / 10 || res < INT_MIN / 10)
                return 0;
            res = res * 10 + x % 10;
            x /= 10;
        }
        return res;
    }
};

本题关键点在于溢出的判断:

if (res > INT_MAX / 10 || res < INT_MIN / 10)
    return 0;

检查溢出的不等式来自于:res * 10 + x % 10 > INT_MAX。此不等式若成立,则会溢出,返回0即可。

上一篇下一篇

猜你喜欢

热点阅读