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

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

相关文章:

  • 2022-12-23
  • 2021-11-06
  • 2022-02-07
  • 2021-07-03
  • 2022-12-23
  • 2022-12-23
  • 2021-10-08
  • 2022-02-03
猜你喜欢
  • 2021-12-21
  • 2021-09-12
  • 2021-10-09
  • 2021-05-19
  • 2021-07-07
  • 2021-09-25
相关资源
相似解决方案