前面是我的几点总结:
是个考数学操作,以及整数位数便利的题。基本上是while a!=0: d=a%10;a=a//10
- 用abs()函数,比较优雅一点
- 负数-n
- python3里面//是整数除法
- 用同一个loop,一边right shift a,一边left shift n
这里是Michelle小梦想家的youtube视频https://www.youtube.com/watch?v=NasutT5RAaM&list=PL2rWx9cCzU84eBz9Xfp9Rah5Fexq5yrh8&index=2
好像她最后的if那里不对,差了一个数。题目是说[-2^31, 2^31-1]不过没有关系, 小问题。
另外就是leetcode可能问的是如果整数是INT32,溢出怎么考虑。这样其它语言就比较麻烦了。
python的整数是arbitary precision, 所以没有这个问题。
class Solution:
def reverse(self, x: int) -> int:
a = abs(x)
n = 0
while a!=0:
n = n*10 + a%10
a = a//10
if x<0 and n<=2147483648:
return -n
elif x>0 and n<2147483648:
return n
else:
return 0