怎么用python3代码检查回文序列?

冷炫風刃
发布: 2025-11-28 10:48:06
原创
213人浏览过
检查回文序列的核心是判断其与反转结果是否相同。Python中可通过切片s[::-1]直接比较,或用双指针法从两端向中间遍历比较字符,前者简洁,后者节省空间。根据需求可统一转小写并过滤非字母数字字符。

怎么用python3代码检查回文序列?

检查回文序列的核心思路是判断一个序列是否与其反转后的结果相同。Python3 中可以利用字符串或列表的切片特性快速实现。

使用字符串切片检查回文

字符串切片 [::-1] 可以将字符串反转,直接与原字符串比较即可。

- 将输入统一转为小写,避免大小写影响判断 - 去除空格和标点符号(可选,视需求而定) - 使用 == 比较原字符串和反转字符串

示例代码:

def is_palindrome(s):
    s = s.lower() # 统一转小写
    s = ''.join(filter(str.isalnum, s)) # 只保留字母数字
    return s == s[::-1]

print(is_palindrome("A man a plan a canal Panama")) # True
print(is_palindrome("racecar")) # True
print(is_palindrome("hello")) # False

使用双指针法检查回文

不创建新字符串,节省内存。用两个指针从头尾向中间移动,逐个比较字符。

立即学习Python免费学习笔记(深入)”;

vizcom.ai
vizcom.ai

AI草图渲染工具,快速将手绘草图渲染成精美的图像

vizcom.ai 139
查看详情 vizcom.ai
- 左指针从索引 0 开始,右指针从末尾开始 - 跳过非字母数字字符 - 一旦发现不相等就返回 False

示例代码:

def is_palindrome_two_pointers(s):
    left, right = 0, len(s) - 1
    s = s.lower()

    while left < right:
        if not s[left].isalnum():
            left += 1
        elif not s[right].isalnum():
            right -= 1
        else:
            if s[left] != s[right]:
                return False
            left += 1
            right -= 1
    return True

检查纯字符串或数字回文(不考虑标点)

如果只关心字母本身且输入已清理,可以直接用切片。

def simple_palindrome(s):
    return s == s[::-1]

print(simple_palindrome("abba")) # True
print(simple_palindrome("abc")) # False

基本上就这些。根据你的数据情况选择方法:简单场景用切片,复杂文本推荐过滤后再处理。双指针适合对空间要求高的情况。

以上就是怎么用python3代码检查回文序列?的详细内容,更多请关注php中文网其它相关文章!

python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号