题目
思路
基本流程如下:
取最后一位使用% 10
,右移使用/ 10
,左移使用* 10
,由于左移可能会溢出,因此在左移之前需要检查是否溢出,即通过将需要左移的数字同INT_MAX / 10
和INT_MIN / 10
进行比较判断是否在左移后会溢出。
代码
class Solution {
public:
int reverse(int x) {
int result = 0;
int cur = 0 ;
int base = 10;
while(x != 0) {
cur = x % base;
// result左移
if ( (result > INT_MAX / 10) || (result < INT_MIN / 10) ) {
return 0;
}
// 第一次执行到这里是是不需要左移的,不过由于左移时result为0,不会影响结果
result *= 10;
result += cur;
// x右移
x /= 10;
}
return result;
}
};