题目
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
思路
题目给了我们一个整数x,我们需要把他进行反转,对于这个x,我们需要每次弹出x最低位,将最低位插入到result的末尾。这样,x的低位就变成了result的高位,也就完成了反转。
需要注意的是我们要判断当前的结果是否越界。
代码
class Solution {
public int reverse(int x) {
int result=0;
int INT_MAX=Integer.MAX_VALUE;
int INT_MIN=Integer.MIN_VALUE;
while(x!=0){
int num=x%10;
x/=10;
if (result>INT_MAX/10 || (result==INT_MAX/10 && num > INT_MAX%10)){
return 0;
}
if (result<INT_MIN/10 || (result==INT_MIN/10 && num < INT_MIN%10)){
return 0;
}
result=result*10+num;
}
return result;
}
}