7. 整数反转
题目描述
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。不能溢出。
解题思路
1. 暴力
将整数转成list,反转之后判断最后一位是什么。再拼接起来。最后判断是否溢出。
def reverse(self, x: int) -> int:
x = list(str(x))
s = x[::-1]
res = 0
if s[-1] == '-':
s.pop()
s.insert(0,'-')
res = int(''.join(s))
else:
res = int(''.join(s))
return res if res <= (2**31-1) and res >= (-2**31) else 0
时间复杂度O(n),空间复杂度O(n)
2. 用求余和整除符号
def reverse(self, x: int) -> int:
num,res = abs(x),0
while num:
res = res*10 + num % 10
num = num //10
if x < 0:
res = -res
if res >= 2**31-1 or res <= -2**31:
return 0
return res
reference
[1] 7. 整数反转: https://leetcode-cn.com/problems/reverse-integer/submissions/.