classSolution(object): defreverse(self, x): """ :type x: int :rtype: int """ y, ans = abs(x), 0 # 边界 boundry = (1<<31) if x<0else (1<<31) - 1 while y!=0: ans = ans*10 + y%10 if ans > boundry: return0 y //= 10 return ans if x>0else -ans
另外利用移位可以很容易表示一个很大的边界值。
解法2: 转化为字符串
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
classSolution(object): defreverse(self, x): """ :type x: int :rtype: int """ if -10<x<10: return x str_x = str(x) boundry = 1<<31if x<0else (1<<31)-1 if x>0: temp = str_x[::-1] else: temp = str_x[:0:-1] ans = int(temp) if ans>boundry: return0 else: return ans if x>0else -ans