参考题解
class Solution:
def isPalindrome(self, s: str) -> bool:
n = len(s)
left, right = 0, n - 1
while left < right: # Note(1)
while left < right and not s[left].isalnum(): # Note(2)
left += 1
while left < right and not s[right].isalnum(): # Note(2)
right -= 1
print(left, right)
if left < right: # Note(3)
if s[left].lower() != s[right].lower(): # Note(5)
return False
left, right = left + 1, right - 1 # Note(4)
print(left, right)
return True
题目容易忽略的地方是:
Note(1)和Note(3)用left < right
和left <= right
都是可以的,因为Note(4)保证了不会出现left==right
的情况吧
Note(2)这里原来python或者其它的编程语言都有判断字符串是否只包含子母或者数字的内置函数呀~学习了学习了
isalnum()判断字符串是否只包含子母或者数字
isalpha()判断字符串是否只包含子母
isdigit()检测字符串是否只由数字组成
Note(5)这里字符.lower()
的字符是字母或者数字的时候都可以判断大小写哟