题目描述:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
难度:简单
示例1:
输入: 123
输出: 321
示例2:
输入: -123
输出: -321
示例3:
输入: 1534236469
输出: 0
注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
解题思路:由整数反转--->字符串反转,先把整数转换成字符串,最后再转换回整数
- 方法一:切片法反转字符串
执行用时 :24 ms
内存消耗 :12.7 MB
- 方法二:reserved()方法反转字符串
执行用时 :28 ms
内存消耗 :12.7 MB
代码:
- 方法一:
class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
# 转换成字符串,整数反转->字符串反转
# 方法一:切片法反转y[::-1]
if(x >= 0): #处理正整数
y = str(x) #str()把x转成字符串
y = int(y[::-1])
else: #处理负整数
y = str(abs(x)) #把负整数取绝对值之后再反转,最后添加负号
y = int(y[::-1])
y = -y
if (y < (-2) ** 31) or (y > 2 ** 31 - 1): # 如果超出 [−2^31,2^31−1]范围,返回0
return 0
return y
- 方法二:
class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
# 方法二:reversed()反转
if (x >= 0): # 处理正整数
y = str(x) # str()把x转成字符串
y = int(''.join(reversed(y)))
else: # 处理负整数
y = str(abs(x)) # 把负整数取绝对值之后再反转,最后添加负号
y = int(''.join(reversed(y)))
y = -y
if (y < (-2) ** 31) or (y > 2 ** 31 - 1): # 如果超出 [−2^31,2^31−1]范围,返回0
return 0
return y
执行结果: