文章目录
- 题目
- 题目详情
- 示例
- 注意
- 解题代码
- 小知识
- 代码
- 运行结果
- 体会
题目
题目详情
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例
输入: 123
输出: 321
输入: -123
输出: -321
输入: 120
输出: 21
注意
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
解题代码
小知识
python字符串的切片操作:
>>list1 = '12345'
>>list1[::-1]
>>'54321'
>>list1 = '-12345'
>>list1[1:]
>>'12345'
代码
class Solution:def reverse(self,x):if x == 0: #等于0的情况return 0if x > 0: #大于0的情况x = str(x)x = x[::-1]else: #小于0的情况x = str(x)x = x[1:] #为了删除负号x = x[::-1] x = '-' + xx = int(x)if -2**31 < x < 2**31-1: #为了不超出32位整数return xelse:return 0
运行结果
体会
总的执行结果不是很好,我的运行时长是88ms,而最快的是40ms,下面我将贴下代码
class Solution:def reverse(self, x: int) -> int:rev = 0while x != 0:pop = x % 10 - 10 if x < 0 and x % 10 != 0 else x % 10x = int(x / 10)if rev > (2 ** 31 - 1) / 10:return 0if rev < - (2 ** 31) / 10:return 0rev = rev * 10 + popreturn rev