题目:
125.验证回文串
思路:
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
将字符串逆序后于原字符串比较相等,即可。
这个方法需要提前处理符号。
class Solution:
def isPalindrome(self, s: str) -> bool:
# 全部转换成小写字母
# 过滤其他,只保留字母
# 反转字符串
# 比较反转前后反转后是否相等
s = s.lower() # 全部转化成小写
s = list(filter(str.isalnum, s)) # 过滤掉除字母之外的其他元素
print(s)
s_re = reversed(s)
return ''.join(s) == ''.join(s_re)
另一个思路:对撞指针
。分别从前和从后遍历字符串,比较指针left和right所指元素是否相等。
class Solution:
def isPalindrome(self, s: str) -> bool:
n = len(s)
i = 0
j = n-1
while i < j:
if s[i].isalnum() == False:
i += 1
continue
if s[j].isalnum() == False:
j -= 1
continue
if s[i].lower() != s[j].lower():
return False
i += 1
j -= 1
return True