LeetCode--关于整数反转
题目描述思路代码难点
题目描述
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
思路
使用Java,有符号整数的最大值为Integer.MAX_VALUE,最小值为Integer.MIN_VALUE。 初始化rev为0,利用循环,每次取出x的最后一位数,并将x缩小10倍。当n符合要求时,将rev扩大10倍,加上取出的数,直到x为0。最终打印n。
代码
public class ReversingNum {
public int reverse(int x) {
int rev = 0;
int pop = 0;
while(x != 0)
{
pop = x % 10;
x /= 10;
if(rev > Integer.MAX_VALUE / 10 || (rev == Integer.MAX_VALUE / 10 && pop > 7))
return 0;
else if(rev < Integer.MIN_VALUE / 10 || (rev == Integer.MIN_VALUE / 10 && pop < -8))
return 0;
rev = rev * 10 + pop;
}
return rev;
}
}
难点
这个题主要难度在于判断是否超出整数范围,记得要在扩大rev之前对rev进行判断