检查回文序列的核心是判断其与反转结果是否相同。Python中可通过切片s[::-1]直接比较,或用双指针法从两端向中间遍历比较字符,前者简洁,后者节省空间。根据需求可统一转小写并过滤非字母数字字符。
检查回文序列的核心思路是判断一个序列是否与其反转后的结果相同。Python3 中可以利用字符串或列表的切片特性快速实现。
字符串切片 [::-1] 可以将字符串反转,直接与原字符串比较即可。
== 比较原字符串和反转字符串
示例代码:
def is_palindrome(s):
s = s.lower() # 统一转小写print(is_palindrome("A man a plan a canal Panama")) # True
print(is_palindrome("racecar")) # True
print(is_palindrome("hello")) # False
不创建新字符串,节省内存。用两个指针从头尾向中间移动,逐个比较字符。
- 左指针从索引 0 开始,右指针从末尾开始 - 跳过非字母数字字符 - 一旦发现不相等就返回 False示例代码:
def is_palindrome_two_pointers(s):如果只关心字母本身且输入已清理,可以直接用切片。
def simple_palindrome(s):print(simple_palindrome("abba")) # True
print(simple_palindrome("abc")) # False
基本上就这些。根据你的数据情况选择方法:简单场景用切片,复杂文本推荐过滤后再处理。双指针适合对空间要求高的情况。