📅  最后修改于: 2023-12-03 14:50:45.083000             🧑  作者: Mango
回文是指正序和倒序都相同的字符串,比如“aba”和“racecar”就是回文。在 Python 中,我们可以通过一些技巧来判断一个字符串是否是回文。
下面是几种判断回文的方法:
我们可以使用 Python 中内置的字符串切片来反转字符串,然后判断反转后的字符串和原字符串是否相同。
def is_palindrome(s):
return s == s[::-1]
print(is_palindrome("aba")) # True
print(is_palindrome("racecar")) # True
print(is_palindrome("hello")) # False
我们也可以用递归的方法来判断一个字符串是否是回文。首先判断字符串的首尾字符是否相同,如果相同,再递归判断中间的子串是否为回文。
def is_palindrome(s):
if len(s) <= 1:
return True
if s[0] != s[-1]:
return False
return is_palindrome(s[1:-1])
print(is_palindrome("aba")) # True
print(is_palindrome("racecar")) # True
print(is_palindrome("hello")) # False
我们也可以用栈和队列来判断一个字符串是否是回文。首先将字符串中的所有字符依次入栈和入队,然后从栈中弹出字符和从队列头部取出字符进行比较,如果所有字符都相同,则原字符串是一个回文。
from collections import deque
def is_palindrome(s):
stack = []
queue = deque()
for c in s:
stack.append(c)
queue.append(c)
while stack and queue:
if stack.pop() != queue.popleft():
return False
return True
print(is_palindrome("aba")) # True
print(is_palindrome("racecar")) # True
print(is_palindrome("hello")) # False
以上三种方法都可以有效地判断一个字符串是否是回文。但是在实际应用中,我们需要根据具体的情况来选择合适的方法。