No7. 整数反转
题目
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
示例 1
- 输入:x = 123
- 输出:321
示例 2
- 输入:x = -123
- 输出:-321
示例 3
- 输入:x = 120
- 输出:21
示例 4
- 输入:x = 0
- 输出:0
提示
- -231 <= x <= 231 - 1
解题代码(Python3)
class Solution:
def reverse(self, x: int) -> int:
if str(x)[0] == '-':
res = -int(str(x)[-1:0:-1])
else:
res = int(str(x)[::-1])
return res if -2**31 <= res < 2**31 else 0
思路:
首先判断开头字符是否为‘-’,然后按情况分别使用切片进行倒序排列,在开头有负号是要在res前补上一个负号,在最后对res的范围进行判别,若越界则返回0。
复杂度分析:
- 时间复杂度O(n) 因为使用了列表的切片
- 空间复杂度O(1)