要实现输入一个整数将它逆序输出,核心方法包括字符串反转法、数学运算法以及边界条件处理。其中字符串法适合快速实现,数学法更体现算法思维,需特别注意负数符号处理、末尾零消除和32位整数溢出判断三大技术要点。
-
字符串反转法
将整数转为字符串后切片反转是最直接的方式。例如Python中plaintext复制可得到"54321"。需注意:负数需先提取符号字符,反转后拼接;输入为0时直接返回0。此方法时间复杂度O(n),空间复杂度O(n),适合非性能敏感场景。str(12345)[::-1]
-
数学运算法
通过循环取余和除法运算实现反转:
python复制def reverse_num(x): res = 0 sign = -1 if x <0 else 1 x = abs(x) while x > 0: res = res*10 + x%10 x = x//10 res *= sign return res if -2**31 <= res <= 2**31-1 else 0
此方法时间复杂度O(log₁₀n),空间复杂度O(1),但需处理32位整数溢出问题,当反转结果超过[-2³¹, 2³¹-1]时返回0。
- 特殊场景处理
- 负数处理:先记录符号,反转绝对值后还原符号
- 末尾零消除:输入10200应输出201而非20100,数学法自动处理,字符串法需去除前导零
- 溢出检测:数学法每次循环需检查plaintext复制的临界条件
res > (2**31-1)//10
当处理超过10亿次的操作时,数学法比字符串法快约3倍。建议根据具体场景选择方法——快速开发用字符串法,算法面试用数学法,生产环境建议添加类型检查和异常捕获。注意测试用例应覆盖0、负数、含零数、边界值(2147483647和-2147483648)等典型情况。