编写一个函数,给定一个字符串,判断该字符串是否为回文。所谓回文,是指从前往后读和从后往前读是一样的,如:'abcba'
时间: 2024-12-13 22:26:06 浏览: 37
编写一个函数来判断一个字符串是否是回文可以采用双指针法。这种方法通过比较字符串的首字符和尾字符,然后逐个向中间移动,如果在任何时候发现字符不相等,则说明不是回文;如果遍历完整个字符串都没有找到不匹配的字符,那么它就是回文。
以下是这个函数的一个Python示例:
def is_palindrome(s):
# 将字符串转换为小写并移除非字母数字字符
s = ''.join(ch for ch in s.lower() if ch.isalnum())
# 初始化两个指针,一个指向开始,一个指向结束
left, right = 0, len(s) - 1
while left < right:
# 如果左右指针指向的字符不相等,返回False
if s[left] != s[right]:
return False
left += 1 # 移动左指针
right -= 1 # 移动右指针
# 没有发现不相等的字符,所以是回文,返回True
return True
# 测试例子
print(is_palindrome('A man, a plan, a canal: Panama')) # 输出:True
print(is_palindrome('hello')) # 输出:False
相关问题
python编写一个函数,给定一个字符串,判断该字符串是否为回文
一个回文字符串是指正着读和倒着读都是一样的字符串,比如 "racecar"。可以使用以下代码实现:
def is_palindrome(string):
# 判断字符串是否为回文
return string == string[::-1]
这里使用了 Python 中的字符串切片语法,string[::-1]
表示将字符串反转。如果反转后的字符串和原字符串相同,那么就是回文字符串,返回 True
;否则返回 False
。
编写一个函数,给定一个字符串,判断该字符串是否为回文,输出是回文数或者不是回文数
以下是Python代码实现:
def is_palindrome(s):
s = s.lower() # 将字符串转换为小写字母,忽略大小写
left, right = 0, len(s) - 1 # 定义左右指针
while left < right:
if not s[left].isalnum(): # 如果左指针指向的字符不是字母或数字,向右移动
left += 1
elif not s[right].isalnum(): # 如果右指针指向的字符不是字母或数字,向左移动
right -= 1
elif s[left] != s[right]: # 如果左右指针指向的字符不相等,返回False
return False
else: # 否则,左右指针同时向中间移动
left += 1
right -= 1
return True # 如果整个字符串都比较完了,返回True
# 测试
print(is_palindrome("A man, a plan, a canal: Panama")) # True
print(is_palindrome("race a car")) # False
解释:
- 首先将字符串转换为小写字母,忽略大小写。
- 然后定义左右指针,左指针从字符串开头向右移动,右指针从字符串结尾向左移动,比较左右指针指向的字符是否相等。
- 如果左指针指向的字符不是字母或数字,向右移动;如果右指针指向的字符不是字母或数字,向左移动。
- 如果左右指针指向的字符不相等,返回False,说明该字符串不是回文。
- 如果整个字符串都比较完了,返回True,说明该字符串是回文。