整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
比如我们环境只能存储32位的有符号整数,则其数值范围为[-231,231-1],如果超出这个范围那么就返回0
方法:弹出和推入数字 ,溢出前进行检查
思路:们可以一次构建反转整数的一位数字。在这样做的时候,我们可以预先检查向原整数附加另一位数字是否会导致溢出。
反转整数的方法可以与反转字符串进行类比。
我们想重复“弹出” xx 的最后一位数字,并将它“推入”到 rev 的后面。最后,rev 将与 xx 相反。
public class 整数反转 {
public int reverse(int x){
int rev=0;
while(x!=0){
int pop=x%10;//pop代表要存入的数字
x/=10;
if(rev>Integer.MAX_VALUE/10 ||(rev == Integer.MAX_VALUE/10&&pop>7))return 0;//每次存入前检查 rev是否符合要求 并且存入pop之前看pop是否也符合要求
if(rev<Integer.MIN_VALUE/10 || (rev == Integer.MIN_VALUE/10&&pop<-8)return 0;//当为负数时同样
rev=rev*10+pop;//存入pop的值
}
return rev;
}
}