Python函数如何检查给定字符串是否是回文?
发布时间:2023-08-05 20:30:29
Python函数可以通过以下几种方法检查给定字符串是否是回文:
方法一:使用切片
def is_palindrome(s):
# 将字符串转换为小写并去除空格和标点符号
s = s.lower().replace(" ", "").strip(",.!?")
# 比较翻转后的字符串和原字符串是否相等
return s == s[::-1]
方法二:使用循环
def is_palindrome(s):
# 将字符串转换为小写并去除空格和标点符号
s = s.lower().replace(" ", "").strip(",.!?")
# 使用循环逐个比较对应位置的字符
for i in range(len(s)//2):
if s[i] != s[-(i+1)]:
return False
return True
方法三:使用递归
def is_palindrome(s):
# 将字符串转换为小写并去除空格和标点符号
s = s.lower().replace(" ", "").strip(",.!?")
# 递归终止条件
if len(s) <= 1:
return True
# 检查首尾字符是否相等,并递归检查中间部分
return s[0] == s[-1] and is_palindrome(s[1:-1])
这些方法都将字符串转换为小写,并移除空格和标点符号。然后,方法一使用切片操作将字符串翻转并与原字符串进行比较,方法二使用循环分别比较对应位置的字符,方法三使用递归不断检查首尾字符是否相等并递归检查中间部分。如果字符串是回文,则返回True,否则返回False。
示例运行结果:
print(is_palindrome("A man, a plan, a canal, Panama!")) # True
print(is_palindrome("Racecar")) # True
print(is_palindrome("Python")) # False
