题目:
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 = 0j = n-1while i < j:if s[i].isalnum() == False:i += 1continueif s[j].isalnum() == False:j -= 1continueif s[i].lower() != s[j].lower():return Falsei += 1j -= 1return True
