题目链接:https://leetcode.com/problems/reverse-integer/
思路一:作为值处理
代码
class Solution:
def reverse(self, x: int) -> int:
res,x_abs=0,abs(x)
while x_abs:
res,x_abs=res*10+x_abs%10,x_abs//10
if res>pow(2,31) :
res=0
return res if x>0 else -res
思路详解
取出符号,在进行处理
一边整除10,一边乘10相加除数
注意点
- 取出符号再进行处理,思路会更简单
- 注意范围的限定
思路二:作为字符串处理
代码
class Solution:
def reverse(self, x: int) -> int:
abs_x=abs(x) # 取绝对值
res=int(str(abs_x)[::-1]) # 反转字符串
res = res if res < pow(2,31) else 0 #判断是否溢出
return res if x >0 else -res
思路详解
通过转为字符串,对字符串进行反转,然后再转为整数
注意点
需要先处理符号,同时因为python整数木有位数要求才能如此,不然直接将字符串转为整数,有溢出的可能,需要查看溢出处理机制,否则可能会有错误。
另外,思路一的处理速度更快