关键就是int的边界处理,用C++写麻烦,Python支持大数
class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
MAX = 2**31 - 1
MIN = -2**31
flag = 1
if x < 0:
x *= -1
flag = -1;
res = 0
while x != 0:
res = res * 10 + x % 10
x /= 10
if res < MIN or res > MAX:
res = 0
return res * flag
solution里面有C++写法,因为int属于 [-2147483648,2147483647],所以在边界处加判断
class Solution {
public:
int reverse(int x) {
int rev = 0;
while (x != 0) {
int pop = x % 10;
x /= 10;
if (rev > INT_MAX/10 || (rev == INT_MAX / 10 && pop > 7)) return 0;
if (rev < INT_MIN/10 || (rev == INT_MIN / 10 && pop < -8)) return 0;
rev = rev * 10 + pop;
}
return rev;
}
};