给定一个 32 位有符号整数,将整数中的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。
前提知识:
不同于其他语言对整数大小的限制,Python中整数的位数是任意的,即若要指定一个极大的整数,只需写出所有的位数即可。
Python中整数对象有bit_number()方法用于显示其转化成二进制后的位数。
思路:
先将x取绝对值后转化成字符串类型,使用-1步长进行倒序处理后再转化成整型,之后判断其二进制位数是否超过31以伪处理溢出问题。
代码:
class Solution:
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
res=int(str(abs(x))[::-1])
if res.bit_length()>31:
return 0
return res if x>0 else -res
分析:
时间复杂度O(1),空间复杂度O(1)
点评:
在查询到Pyhton没有溢出概念时确实非常惊讶。Python确实是个非比寻常的妖艳贱货,很适合我。
Python字符串和列表中使用-1步长以倒序处理,非常经典。之前我还是一直使用类C语言中的取模整除操作在实现。