整数反转的这个题目,一开始想的是先判断是否为负数,如果为负数就转为整数,但是测试用例中给了一个-2147483648,转化为正后直接就超了有符号整数最大值 2147483647,所以还是不这么做了。
原来是这么做的,此方法中还存在一个问题,就是结果res可能超过无符号整数的范围,所以用Long 比较好。
下面是修改后的代码
int reverse(int x){
if (x == 0) {
return 0;
}
int flag = 0;
long int res = 0;
int temp = 0;
while (x != 0) {
temp = x % 10;
res = res * 10 + temp;
x = x / 10;
}
if ( res <= INT_MIN || res >= INT_MAX)
return 0;
else
return res;
}