valid-palindrome

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
"""
判断字符串是否回文
https://leetcode.com/problems/valid-palindrome/
"""
class Solution:
def isPalindrome(self, s: str) -> bool:
if len(s) <= 1:
return True
start = 0
end = len(s) - 1
s = s.lower()
while start < end:
if not s[start].isalnum():
start += 1
elif not s[end].isalnum():
end -= 1
else:
if s[start] != s[end]:
return False
start += 1
end -= 1
return True


if __name__ == '__main__':
s = Solution()
assert s.isPalindrome("A man, a plan, a canal: Panama") == True
assert s.isPalindrome("race a car") == False