本题较易。关键点是如何判断溢出。
我的解法如下:
int maxn=0x7FFFFFFF;
int reverse2(int x) {
long long ret=0;
while(x) {
ret = ret*10 + x%10;
x/=10;
}
if ((ret>maxn) || (ret<-maxn)) return 0;
return (int)ret;
}
我看到网上有的解法如下,不用long long也可以。
int reverse(int x) {
int ans = 0;
while (x) {
int temp = ans * 10 + x % 10;
if (temp / 10 != ans)
return 0;
ans = temp;
x /= 10;
}
return ans;
}
上面的(temp/10 != ans) 表示已经overflow。