125. Valid Palindrome
思路一:相向双指针
class Solution:
def isPalindrome(self, s: str) -> bool:
i, j = 0, len(s)-1
while i < j:
left = s[i].lower()
if not (left.isalpha() or left.isdigit()):
i += 1
continue
else:
right = s[j].lower()
if not (right.isalpha() or right.isdigit()):
j -= 1
continue
else:
if left != right:
return False
else:
i += 1
j -= 1
return True
思路二:粗暴点,去除无效字符后,全部小写,从中心切割,把右边逆序,再对比
class Solution:
def isPalindrome(self, s: str) -> bool:
valid = [x.lower() for x in s if (x.isalpha() or x.isdigit())]
mid = len(valid)//2
left = valid[:mid]
right = valid[len(valid)-mid:]
right.reverse()
if left == right:
return True
else:
return False
Last updated
Was this helpful?