这个题目两年前第一次做的时候,采用的是直接字符串反转,然后转回int,其中字符串反转使用代码:
s = s[::-1]
完整的代码:
class Solution:
def reverse(self, x: int) -> int:
# 利用字符串进行反转
if x < 0:
s = str(x)[1:]
s = s[::-1]
x = -1 * int(s)
else:
s = str(x)
s = s[::-1]
x = int(s)
if x >= -2 ** 31 and x < 2 ** 31:
return x
else:
return 0
这次使用了计算的方式,不过要注意,python的负数整除以及负数取余和java不一样,要加入一些判断,个人感觉还是字符串好使哈哈哈,太方便了。
class Solution:
def reverse(self, x: int) -> int:
tmp = x
res = 0
MIN, MAX = -2 ** 31, 2 **31 - 1
while tmp != 0:
if tmp < 0 and tmp % 10 > 0:
digit = tmp%10 - 10
else:
digit = tmp % 10
res = res * 10 + digit
if tmp < 0:
tmp = (tmp - digit) // 10
else:
tmp = tmp // 10
if res > MIN and res < MAX:
return res
else:
return 0
: