📜  回文 python (1)

📅  最后修改于: 2023-12-03 14:50:45.083000             🧑  作者: Mango

回文 Python

回文是指正序和倒序都相同的字符串,比如“aba”和“racecar”就是回文。在 Python 中,我们可以通过一些技巧来判断一个字符串是否是回文。

下面是几种判断回文的方法:

方法1:反转字符串

我们可以使用 Python 中内置的字符串切片来反转字符串,然后判断反转后的字符串和原字符串是否相同。

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

print(is_palindrome("aba"))  # True
print(is_palindrome("racecar"))  # True
print(is_palindrome("hello"))  # False
方法2:递归判断

我们也可以用递归的方法来判断一个字符串是否是回文。首先判断字符串的首尾字符是否相同,如果相同,再递归判断中间的子串是否为回文。

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
方法3:栈与队列

我们也可以用栈和队列来判断一个字符串是否是回文。首先将字符串中的所有字符依次入栈和入队,然后从栈中弹出字符和从队列头部取出字符进行比较,如果所有字符都相同,则原字符串是一个回文。

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

以上三种方法都可以有效地判断一个字符串是否是回文。但是在实际应用中,我们需要根据具体的情况来选择合适的方法。