📅  最后修改于: 2023-12-03 15:20:32.741000             🧑  作者: Mango
这是一道 TCS 编码练习题,要求实现一个函数,将给定的整数反转。例如,输入 12345,输出 54321。
对于一个整数 x,我们可以将其反转为 y,不断取出 x 的末位,加到 y 的末尾,直到 x 为 0。具体实现时,我们可以通过循环取出 x 的末位,然后将其乘以进位因子加到 y 中。进位因子初始值为 1,每次循环将其乘以 10。
def reverse_number(x):
y = 0
sign = -1 if x < 0 else 1
x *= sign
while x:
y = y * 10 + x % 10
x //= 10
return y * sign
print(reverse_number(12345)) # 54321
print(reverse_number(-12345)) # -54321
print(reverse_number(0)) # 0
此算法的时间复杂度为 $O(\log_{10}x)$,空间复杂度为 $O(1)$。其中,$x$ 为输入的整数。算法的性能较为优秀,可以满足大多数场景的需求。