Given a 32-bit signed integer, reverse digits of an integer.
Example 1:
Input: 123
Output: 321
Example 2:
Input: -123
Output: -321
如果溢出,返回0.
思路:
转换部分就是通过res存x的从后面的每一个数进来。但是在对于计算res之前要判断是否会溢出。
利用常量INT_MAX来判断。
res10>INT_MAX || res10+x%10 > INT_MAX 就不行
code
class Solution {
public:
int reverse(int x) {
int sign = x < 0 ? -1 : 1;
x = abs(x);
int res = 0;
while (x > 0) {
if (INT_MAX / 10 < res || (INT_MAX - x % 10) < res * 10) { //!!!
return 0;
}
res = res * 10 + x % 10;
x /= 10;
}
return sign * res;
}
};