解题思路
- 题目力扣上面有,而这个题的主要要求是结果的范围要符合Int类型的范围。
- 如果是可以遍历的数组、字符串啥的可以借助栈实现反转,So Easy。可是这个题目是整数,那么可以借助此思想来模拟栈。
- 如何模拟? 如下:
x为要反转的整数
// pop operation
tmp = x % 10
// push operation
res = res * 10 + tmp
- 在给res赋值时,先判断新产生的结果是否符合要求,符合要求则赋值,否则返回0。res的比较,我利用的是long型比较,因为如果是int的话,java代码的表达式计算结果如果超出接收变量的类型范围会自动进行重新计算,具体怎样算自行百度吧,所以提升为long型进行计算。
代码如下:
class Solution {
public int reverse(int x) {
int tmp = 0;
int res = 0;
while(x != 0) {
tmp = x % 10;
if(res * 10l + tmp > Integer.MAX_VALUE || res * 10l + tmp < Integer.MIN_VALUE) {
return 0;
}
res = res * 10 + tmp;
x /= 10;
}
return res;
}
}