题目描述
思路
模拟
记rev为反转后的数字,为完成反转,可以重复弹出x的末尾数字,将其推入rev的末尾,直至x为0。
可以使用
r
e
v
=
r
e
v
∗
10
+
x
rev = rev * 10 + x % 10
rev=rev∗10+x的方式进行反转,但是要注意反转后的数是否超过32位有符号整数的范围。如果超过范围,则直接返回0。
Python实现
class Solution:
def reverse(self, x: int) -> int:
INT_MIN, INT_MAX = -2**31, 2**31-1
rev = 0
while x != 0:
if rev < INT_MIN // 10 + 1 or rev > INT_MAX // 10:
return 0
digit = x % 10
if x < 0 and digit > 0:
digit -= 10
x = (x-digit) // 10
rev = rev * 10 + digit
return rev
Java实现
class Solution {
public int reverse(int x) {
int rev = 0;
while (x != 0) {
if (rev < Integer.MIN_VALUE / 10 || rev > Integer.MAX_VALUE / 10) {
return 0;
}
int digit = x % 10;
x /= 10;
rev = rev * 10 + digit;
}
return rev;
}
}