题目是:
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer
自知水平有限,所以先挑的简单题刷,附上自己的代码:
class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
list1 = [] # 先定义一个空列表
x = list(str(x)) # 将传进来的整数转换为str,在转为可变的列表
lens = len(x) # 求出列表长度
lens2 = lens-1
if x[0] == '-':
list1.append('-') # 如果为负数,符号要保持不变
for i in range(1,lens):
list1.append(x[lens-i]) # 用append函数直接反转
else:
for i in range(0,lens):
list1.append(x[lens2-i])
if (int(''.join(list1)) > (2**31)) | (int(''.join(list1)) < -(2**31)):
return 0 # 限制范围
else:
return int(''.join(list1)) # 用join先将列表换回str,在转为int
Solution().reverse(123)
执行用时32ms,超过32%
内存消耗12.3MB,超过94%
其实应该还有一个处理,对于输入120,输出为21,类似这种的输入处理