要求:
此题需要注意两个条件:
1.正负号
2.溢出
如果溢出,则认为有两种情况:1.达到最小值,则返回0;
2.n*10发生越界,则返回0
思路:结果数=原来的余数*10^原来位数+......+原来的最大位数
结果数*10,原来数除以10取余
代码:
class Solution { public int reverse(int x){ if(x==Integer.MIN_VALUE) return 0; int neg=x<0?-1:1; x*=neg; int ret=0; while(x>0){ int n=ret; n*=10; n+=x%10; x/=10; if(n/10!=ret){ return 0; } ret=n; } return ret*=neg; } }