欢迎访问宙启技术站
智能推送

Python函数:如何检查给定的字符串是否为回文字符串?

发布时间:2023-07-09 15:47:03

要检查一个给定的字符串是否为回文字符串,可以利用两个指针从字符串的开头和结尾同时往中间移动,依次比较两个指针所指的字符是否相同。

以下是一个用Python实现的函数,可以检查给定的字符串是否为回文字符串:

def is_palindrome(s):
    # 去除字符串中的空格和标点符号,并将所有字符转换为小写
    s = "".join(filter(str.isalnum, s)).lower()
    # 初始化两个指针,分别指向字符串的开头和结尾
    left, right = 0, len(s) - 1
    
    # 指针相遇前,一直比较两个指针所指的字符是否相等
    while left < right:
        if s[left] != s[right]:
            return False
        left += 1
        right -= 1
    
    return True

这个函数首先通过使用 filter 函数和 str.isalnum 方法去除字符串中的空格和标点符号,并将所有字符转换为小写。

然后,利用两个指针 leftright ,分别指向字符串的开头和结尾。

接下来,在指针相遇之前,不断比较两个指针所指的字符是否相等。如果有任何字符不相等,函数会立即返回 False 表示不是回文字符串。如果指针相遇后没有返回 False ,则说明给定的字符串是回文字符串,函数返回 True

这个函数的时间复杂度为 $O(n)$ ,其中 $n$ 是字符串的长度。