其他分享
首页 > 其他分享> > 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转

给出一个 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

标签:10,每位,return,reverse,int,32,整数,x%,else
来源: https://www.cnblogs.com/fool-jingqiu/p/11176399.html