力扣(LeetCode) 9: 回文数 - 解法思路

问题概述

给定一个整数 x,如果 x 是回文数,返回 true;否则,返回 false

回文数是指正读和反读都相同的整数。

解法 1:字符串转换(最简单)

工作原理

将整数转换为字符串,检查是否等于其反转:

python 复制代码
class Solution:
    def isPalindrome(self, x):
        if x < 0:
            return False
        s = str(x)
        return s == s[::-1]

为什么 x < 0 返回 False

  • 负数不能是回文数,因为它们在开头有一个负号(-
  • 当反转时,像 -121 这样的负数会变成 121-,这不是有效的整数表示
  • 因此,所有负数都会被立即拒绝

复杂度分析

  • 时间复杂度: O(n) - 其中 n 是数字的位数
  • 空间复杂度: O(n) - 用于字符串转换

何时使用

  • 最简单易懂,易于实现
  • 在实际情况下最快
  • 易于阅读和维护

解法 2:反转数字(数学方法)

工作原理

数学方法反转数字并与原数字比较:

python 复制代码
class Solution:
    def isPalindrome(self, x):
        if x < 0:
            return False
        
        original = x
        reversed_num = 0
        
        while x > 0:
            reversed_num = reversed_num * 10 + x % 10
            x //= 10
        
        return original == reversed_num

复杂度分析

  • 时间复杂度: O(n) - 其中 n 是数字的位数
  • 空间复杂度: O(1) - 只使用常数额外空间

何时使用

  • 当你想避免字符串转换时
  • 需要常数空间
  • 实际情况下比字符串转换稍慢

对比

方法 时间 空间 最佳适用
字符串转换 O(n) O(n) 大多数情况,最简单代码
反转数字 O(n) O(1) 常数空间要求

总结

字符串转换方法是最简单的,在大多数情况下实际最快。反转数字方法使用常数空间但稍慢。根据你的优先级选择:简单性和速度(字符串)vs 空间效率(反转)。

相关推荐
先吃饱再说23 分钟前
判断回文字符串,从一行代码到双指针优化
算法
她的男孩1 小时前
后台接口加密别只会 HTTPS,ForgeAdmin 的 RSA + SM4/AES 源码拆解
后端·面试·开源
Randyliu2 小时前
20260508-Agent搭建记录以及对ReAct框架的理解
面试·agent
小九九的爸爸2 小时前
前端想要入门Agent开发,要具备哪些Python基础?
python·agent·ai编程
ZzT3 小时前
公司用 AI 筛简历,他写了个 AI 帮你挑公司
面试·aigc·ai编程
黄敬峰3 小时前
深入理解算法核心:从递归思想、数组扁平化到快速排序
算法
PBitW3 小时前
GPT训练我的第四天,被打惨了!!!😭😭😭
前端·javascript·面试
阿耶同学3 小时前
手把手教你用 LangGraph 搭建三层嵌套 Agent 架构
python·程序员
得物技术4 小时前
从狂野代码到按目标生产:得物推荐 AI Harness 的工程化实践|AICon 演讲整理
人工智能·算法·架构
AI小老六8 小时前
SkillOpt 架构拆解:把 Skill 文本当参数,用执行轨迹训练 Agent
后端·算法·ai编程