7. Reverse Integer
题目描述和难度
- 题目描述:
给定一个 32 位有符号整数,将整数中的数字进行反转。
示例 1:
输入: 123 输出: 321
示例 2:
输入: -123 输出: -321
示例 3:
输入: 120 输出: 21
注意:
假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。
- 题目难度:简单。
- 英文网址:7. Reverse Integer 。
- 中文网址:7. 反转整数 。
思路分析
求解关键:要特别注意到反转以后整数越界的问题。
假设我们的环境只能存储 32 位有符号整数,其数值范围是 $[−2^{31}, 2^{31} − 1]$。根据这个假设,如果反转后的整数溢出,则返回 0。
参考解答
参考解答1
public class Solution {
public int reverse(int x) {
int sign = x >= 0 ? 1 : -1;
long res = 0;
x = sign * x;
while (x > 0) {
res = res * 10 + x % 10;
x = x / 10;
}
res = sign * res;
if (res > Integer.MAX_VALUE || res < Integer.MIN_VALUE) {
return 0;
}
return (int) res;
}
}
参考解答2:其实可以不用单独判断符号,并且溢出这件事可以在循环当中做。
public class Solution2 {
public int reverse(int x) {
if (x == 0) {
return 0;
}
long res = 0;
while (x != 0) {
res = res * 10 + x % 10;
x /= 10;
if (res > Integer.MAX_VALUE || res < Integer.MIN_VALUE) {
return 0;
}
}
return (int) res;
}
}
本篇文章的地址为 https://liweiwei1419.github.io/leetcode-solution/leetcode-0007-reverse-integer ,如果我的题解有错误,或者您有更好的解法,欢迎您告诉我 liweiwei1419@gmail.com 。