整数反转

题目描述(来源LeetCode)

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。

问题思考

看到题目,我想到的是将整数变成字符串,然后使用字符串的反转操作直接就可以完成反转。最后再转回整数

算法实现

1
2
3
4
5
6
7
8
9
10
11
12
class Solution:
def reverse(self, x: int) -> int:
if x <0:
reverse_str=str(-x)[::-1]
reverse_int=-int(reverse_str)
else :
reverse_str = str(x)[::-1]
reverse_int=int(reverse_str)
if reverse_int<-2**31 or reverse_int>2**31-1:
reverse_int =0

return reverse_int

复杂度分析

  • 时间复杂度:O(Logn)O(Logn)
  • 空间复杂度:O(1)O(1)