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

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即可。

你可能感兴趣的:(7.反转整数 by 2018-04-22)