给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
解析:
反转数字,每次取最低位,上次迭代的值进位加上最低位;
以123为例,第一轮,取3,;第二轮取2,310+2=32;第三轮取1,3210+1=321;
主要考虑,res*10出现溢出问题,加入溢出判断。
public static int reverse(int x) {
int res=0 ;
while(x!=0) {
if(Math.abs(res)>Integer.MAX_VALUE/10)
return 0;
res = res*10+x%10;
x/=10;
}
return res;
}