本身题不难, 但是题目限定了考虑溢出的情况
1、分解出一个数每个位置上的数
2、可以在循环的过程中每次先对先前的数*10, 就可以做到从右向左让这个数慢慢成长
3、基于这个条件可以进行判断
class Solution {
public int reverse(int x) {
int ans=0;
//遍历的顺序是从右到左
while(x!=0) {
int tmp = x%10;
//如果当前数>Integer.MAX_VALUE/10, 无论下一个数字是什么都将溢出. 等于时需要判断下一个数是什么
if(ans > Integer.MAX_VALUE/10 || (ans == Integer.MAX_VALUE/10 && tmp>7))
return 0;
//负数的时候逻辑一致
if(ans < Integer.MIN_VALUE/10 || (ans == Integer.MIN_VALUE/10 && tmp<-8))
return 0;
ans = ans*10+tmp;
x/=10;
}
return ans;
}
}