题目描述
难度中等
给你一个 32 位的有符号整数 x
,返回将 x
中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1]
,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123
输出:321
示例 2:
输入:x = -123
输出:-321
示例 3:
输入:x = 120
输出:21
示例 4:
输入:x = 0
输出:0
提示:
-231 <= x <= 231 - 1
解题步骤
时间复杂度和空间复杂度都是\(O(n)\)。
class Solution:
def reverse(self, x: int) -> int:
s1 = "2147483648"
s2 = "2147483647"
nums = []
if x > 0:
flag = 1
else:
flag = -1
x = -x
while x != 0:
nums.append(x % 10)
x //= 10
n = len(nums)
if n == 10:
if x > 0:
for index, i in enumerate(nums):
if i > int(s2[index]):
return 0
elif i < int(s2[index]):
break
else:
for index, i in enumerate(nums):
if i > int(s1[index]):
return 0
elif i < int(s1[index]):
break
res = 0
for i in nums:
res *= 10
res += i
return flag * res
标签:index,nums,int,反转,示例,整数,res,10
From: https://www.cnblogs.com/crazypigf/p/17323888.html