潜在问题:(1)随着求和可能精度会溢出int 范围,需要使用long 来辅助判断是否溢出,此时返回 0

Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231,  231 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

(2)去前缀0

eg: reverse(1534236469); 会丢精度,如果不校验 所以WA了一次

int reverse(int x) {
long sumLong = 0;
int sum = 0;
int num = 0;
while (x!= 0) { //支持正负数
num = x % 10; //末尾数字
sum = sum * 10;//进位
sum += num;
x = x / 10;
//校验精度
sumLong = sumLong * 10;
sumLong += num;
if (sumLong != sum) {
sum = 0;
break;
}
}
return sum;
}
05-11 13:42