You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断给定数字是否为回文数?求不使用Python内置函数的解法

不使用Python内置函数判断回文数的正统方案

判断回文数的正统方法是数学反转法,完全通过数值运算实现,无需转字符串,效率更高,也是算法场景中的常规解法。

核心思路

  1. 先排除特殊情况:
    • 负数不可能是回文数(负号无法对称)
    • 末尾为0且数字本身不是0的数也不是回文数(比如10、100,反转后前导0会被忽略,无法和原数相等)
  2. 只反转数字的后半部分,和前半部分对比:
    • 循环提取原数的最后一位,逐步构建反转后的后半部分数字
    • 当原数小于等于反转后的数字时,说明已经处理了一半位数
    • 最后对比:偶数位时原数应等于反转后的数字;奇数位时原数应等于反转后数字去掉最后一位(中间的单个数字不影响对称)

无内置函数的代码实现

def is_palindrome(x):
    # 处理特殊情况
    if x < 0 or (x % 10 == 0 and x != 0):
        return False
    
    reverse_num = 0
    while x > reverse_num:
        # 提取x的最后一位,加到反转数中
        reverse_num = reverse_num * 10 + x % 10
        # 去掉x的最后一位
        x = x // 10
    
    # 偶数位:x == reverse_num;奇数位:x == reverse_num // 10(去掉中间的数字)
    return x == reverse_num or x == reverse_num // 10

代码说明

  • 没有使用任何Python内置函数(如str()、reversed()等),完全依赖算术运算
  • 时间复杂度为O(log₁₀n),只需要处理数字的一半位数
  • 空间复杂度为O(1),只用到了几个变量存储中间值

内容的提问来源于stack exchange,提问作者Malladi Sripriya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 13:05:19