整数反转
题目
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
- 示例1:
输入: 123
输出: 321
- 示例2:
输入: -123
输出: -321
- 示例3:
输入: 120
输出: 21
解题思路
%10模除可以得到数字的最后一位;/10可以得到数字的前n位
根据前面两个原理,可以将给定的数字依次进行模除运算得到最后一位,然后根据上一次的结果在进行乘10操作后相加得到新的结果
public static int reverse(int x){
int rev = 0;
while(x!=0){
int lastNum = x%10;
if(rev>Integer.MAX_VALUE/10 ||rev==Integer.MAX_VALUE/10 && lastNum > 7){
return 0;
}
if(rev<Integer.MIN_VALUE/10 ||rev==Integer.MIN_VALUE/10 && lastNum < -8){
return 0;
}
rev = rev*10 + lastNum;
x = x/10;
}
return rev;
}