给定一个 32 位有符号整数,将整数中的数字进行反转。(python)
示例 1:
输入: 123 输出: 321
示例 2:
输入: -123 输出: -321
示例 3:
输入: 120 输出: 21
注意:
假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。
题目链接:https://leetcode-cn.com/problems/reverse-integer/description/
答案:
自己写的很low的代码:
class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
z = 0
if x>0:
while x != 0:
y = x%10
x = x/10
z = z*10+y
if z > pow(2,31)-1:
return 0
elif x<0:
x = abs(x)
while x != 0:
y = x%10
x = x/10
z = z*10+y
z = -z
if z < -pow(2,31):
return 0
else:
return 0
return z
网上搜的,实现比较容易的代码,直接将数字放在list里面,然后将list倒过来,再判断第一位是否为0。但是感觉这个代码如果是1200的话,输出就是错的:
def reverse(x):
if x>0:
a=list(reversed(list(str(x))))
if a[0]=='0':
b=int(''.join(a[1:]))
if b<pow(-2,31) or b>pow(2,31)-1:
return 0
else:
return b
else:
b=int(''.join(a))
if b<pow(-2,31) or b>pow(2,31)-1:
return 0
else:
return b
elif x<0:
a = list(reversed(list(str(x)[1:])))
if a[0]=='0':
b=int(''.join(['-']+a[1:]))
if b<pow(-2,31) or b>pow(2,31)-1:
return 0
else:
return b
else:
b=int(''.join(['-']+a))
if b < pow(-2, 31) or b > pow(2, 31) - 1:
return 0
else:
return b
else:
return 0
所以我改成这样了:
def reverse(x):
if x>0:
a=list(reversed(list(str(x))))
if a[0]=='0':
b=int(''.join(a[1:]))
if b<pow(-2,31) or b>pow(2,31)-1:
return 0
else:
return b
else:
b=int(''.join(a))
if b<pow(-2,31) or b>pow(2,31)-1:
return 0
else:
return b
elif x<0:
a = list(reversed(list(str(x)[1:])))
while a[0] = 0:
a = a[1:]
b=int(''.join(['-']+a))
if b < pow(-2, 31) or b > pow(2, 31) - 1:
return 0
else:
return b
else:
return 0