给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转

在力扣网上做第二道简单的题,上代码:

def reverse(self, x):
"""
:type x: int
:rtype: int
"""
k= 0
j=0
if (-2)**31<x<0:
x = -x   # 参数x为负值时,先转成正数,在计算
while x>0:
if x% 10!=0 or (x% 10==0 and k!=0) :  # 在0不在数字尾部的情况比如109转成901,10900也转成901 和不为0的数字的情况下继续下面的reverse操作
k =j + x% 10   ##可以取消j变量,直接用k = k*10+x%10
x = int(x/10)
j=k*10
if -k>(-2)**31:  #判断下反转后的结果是否溢出,这给很重要,又几次提交代码不通过就是忘记做溢出处理了
return -k
else:
return 0
elif 0<x<2**31-1:
while x>0:
if x% 10!=0 or (x% 10==0 and k!=0):
k = j + x% 10  #可以取消j变量,直接用k = k*10+x%10
x = int(x/10)
j=k*10
if k<2**31-1:
return k
else:
return 0
else:
return k
print("inpur error")

 

P.S 注意溢出

注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer

posted @ 2019-07-12 15:40  婧秋-fool  阅读(1868)  评论(0编辑  收藏  举报