力扣(leetcode) 7. 整数反转(字符串切片翻转)(整数取余翻转)
原创
©著作权归作者所有:来自51CTO博客作者深度不学习的原创作品,请联系作者获取转载授权,否则将追究法律责任
题目在这:https://leetcode-cn.com/problems/reverse-integer/
题目要求做一个数的翻转,直接想到py里的切片方法翻转一个数.
大致思路比较简单,首先记录该数是正的还是负的,然后转成str类型进行翻转,最后判断是不是在条件区间内,然后如果为负加上符号就行了.
上代码!
= 1534236469
st = ''
temp = True # 表示为正
# 如果小于0 就把标记置为负
if num<0:
num = abs(num)
temp = False
st = abs(num)
# 利用切片翻转字符串
st = st[::-1]
# 利用前面的标记 给负数加上符号
if not temp:
st = '-' +st
# 变成int类型
st = int(st)
# 判断范围 返回结果
if (st > -2**31) and (st < 2**31-1):
# if -2**31 < st < 2**31-1: # 这个不对..
print(st)
else:
print(0)
另外一种思路,就是大学里面用C写字符串翻转的思路,取余然后除10那个思路.
上代码!
num = x
temp = x
res = 0
num = abs(num) # abs方法 吧一个负数变正
while num != 0:
res = res*10 +num%10
num //=10
if (res > -2**31) and (res < 2**31-1):
return res if x>0 else -res
else:
return 0
代码还是比较好理解的,放pycharm里跑一次就懂了.
return res if x>0 else -res
这句话就等于
if x>0:
return res
else:
return:-res