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即可。
网友评论