📜  python中的字符串回文(1)

📅  最后修改于: 2023-12-03 15:04:36.201000             🧑  作者: Mango

Python中的字符串回文

一个回文字符串,指的是从左到右和从右到左读起来都是一样的字符串,比如"level"、"racecar"等等。在Python中,判断一个字符串是否为回文字符串也非常简单。

方法一:使用切片

切片是Python中常用的方法之一,它可以根据下标对序列进行截取。对于一个字符串,我们可以使用切片将其反转,然后再和原来的字符串进行比较,如果相等,则说明该字符串是回文字符串。

def is_palindrome(string):
    return string == string[::-1] # 判断字符串反转后是否与原来的字符串相等

上述代码中,[::-1]表示从后向前每隔一个字符取一个字符,这就是字符串反转的操作。

方法二:使用递归

回文字符串的特点是首尾两端字符相同,我们可以通过递归将字符串的首尾字符判断是否相等来判断该字符串是否为回文字符串。

def is_palindrome(string):
    if len(string) < 2: # 递归终止条件
        return True
    elif string[0] != string[-1]:
        return False
    else:
        return is_palindrome(string[1:-1]) # 递归判断子串是否为回文字符串

上述代码中,is_palindrome(string[1:-1])表示对子串进行递归判断,判断子串中除去第一个字符和最后一个字符后是否为回文字符串。

方法三:使用栈

一个回文字符串的特点是它的左半部分和右半部分镜像对称,我们可以用栈来将字符串的左半部分压入栈中,然后依次弹出栈中的字符与字符串剩余部分的字符比较。

def is_palindrome(string):
    stack = []
    for i in range(len(string)//2):
        stack.append(string[i]) # 将字符串左半部分压入栈中
    for i in range((len(string)+1)//2, len(string)):
        if stack.pop() != string[i]:
            return False
    return True

上述代码中,stack.append(string[i])表示将字符串左半部分压入栈中,弹出栈中字符用stack.pop()实现,依次与字符串右半部分进行比较。

总结:

Python中判断一个字符串是否为回文字符串非常简单,可利用切片、递归和栈等方法实现。其中,切片方法简单直观(仅需一行代码),递归方法易于理解(代码可读性好),栈方法可用于扩展,同时占用的空间最小(只需压入一半的字符即可)。