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 方法去除字符串中的空格和标点符号,并将所有字符转换为小写。
然后,利用两个指针 left 和 right ,分别指向字符串的开头和结尾。
接下来,在指针相遇之前,不断比较两个指针所指的字符是否相等。如果有任何字符不相等,函数会立即返回 False 表示不是回文字符串。如果指针相遇后没有返回 False ,则说明给定的字符串是回文字符串,函数返回 True 。
这个函数的时间复杂度为 $O(n)$ ,其中 $n$ 是字符串的长度。
