给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [-2^31, 2^31− 1]。
请根据这个假设,如果反转后整数溢出那么就返回 0。
直接反转,先求反转的值,然后判断是否溢出
class Solution {
public int reverse(int x) {
// 先反转
long res = 0;
while (x != 0) {
res *= 10;
res += x % 10;
x /= 10;
}
// 如果溢出,则返回0
if (res > Integer.MAX_VALUE || res < Integer.MIN_VALUE){
return 0;
}
return (int)res;
}
}
这个题我的第一思路就是这样,然后提交代码也通过了。看官方题解有点复杂,但是感觉也没有必要,有需要小老弟们自己研究下哈
有问题欢迎留言哦
参考:
https://leetcode-cn.com/problems/reverse-integer/solution/
https://draw.mdnice.com/algorithm/7.html