题目描述:
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [ − 2 31 , 2 31 − 1 ] [−2^{31}, 2^{31} − 1] [−231,231−1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
分析:
先判断是否为负数,若是则添加个负号标记。然后将正数部分转为字符串再反转,最后再转为int。剩下的问题就是判断是否溢出。
代码:
执行用时: 76 ms, 在Reverse Integer的Python3提交中击败了54.29% 的用户
内存消耗: 13.3 MB, 在Reverse Integer的Python3提交中击败了0.97% 的用户
class Solution:
def reverse(self, x: int) -> int:
isnegative = False
x_str = str(x)
if x_str[0] == "-":
isnegative = True
x_str = x_str[1:]
x_reversed = x_str[::-1]
if isnegative:
x_reversed = int("-" + x_reversed)
else:
x_reversed = int(x_reversed)
if -2147483648 < x_reversed < 2147483647:
return x_reversed
else:
return 0
复杂度:
时间复杂度: O ( 1 ) O(1) O(1) 空间复杂度: O ( n ) O(n) O(n)