题目
题目详情
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例
输入: 123
输出: 321
输入: -123
输出: -321
输入: 120
输出: 21
注意
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
解题代码
小知识
python字符串的切片操作:
>>list1 = '12345'
>>list1[::-1]
>>'54321'
>>list1 = '-12345'
>>list1[1:]
>>'12345'
代码
class Solution:
def reverse(self,x):
if x == 0: #等于0的情况
return 0
if x > 0: #大于0的情况
x = str(x)
x = x[::-1]
else: #小于0的情况
x = str(x)
x = x[1:] #为了删除负号
x = x[::-1]
x = '-' + x
x = int(x)
if -2**31 < x < 2**31-1: #为了不超出32位整数
return x
else:
return 0
运行结果
体会
总的执行结果不是很好,我的运行时长是88ms,而最快的是40ms,下面我将贴下代码
class Solution:
def reverse(self, x: int) -> int:
rev = 0
while x != 0:
pop = x % 10 - 10 if x < 0 and x % 10 != 0 else x % 10
x = int(x / 10)
if rev > (2 ** 31 - 1) / 10:
return 0
if rev < - (2 ** 31) / 10:
return 0
rev = rev * 10 + pop
return rev