【原题链接】

思路1:先转化为字符串 再取整数
class Solution:
def reverse(self, x: int) -> int:
if x >= 0:
y = int(str(x)[::-1]) #末尾是0 ,反转以后取整数 int会自动把0取消
else:
y = -int(str(-x)[::-1])
return y if -2**31 <= y <= 2**31 - 1 else 0
思路2:

class Solution:
def reverse(self, x: int) -> int:
if x < 0: # 判断是否为负数
return -self.reverse(-x) # 如果是负数则取绝对值调用自身,最后将结果转为负数
res = 0
while x: # 每次得到最后一位数字,并将其作为结果中的当前最高位
res = res * 10 + x % 10
x //= 10
return res if res <= 0x7fffffff else 0 # 如果溢出就返回0
时间复杂度:O(lgx) 空间复杂度O(1)
本文深入探讨了两种有效的整数反转算法实现,一种是通过字符串转换取整,另一种是直接数学操作。文章详细解释了每种方法的步骤,包括如何处理负数和检查溢出条件,确保结果的正确性和效率。时间复杂度为O(lgx),空间复杂度为O(1)。
931

被折叠的 条评论
为什么被折叠?



