Valid Palindrome
Question
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
For example,
"A man, a plan, a canal: Panama"
is a palindrome.
"race a car"
is not a palindrome.
Tags
- String
- Two Pointers
Thought
Use the two pointers to start from the head and the tail of the string respectively and compare the characters at the corresponding position one by one.
Code
class Solution(object):
def isPalindrome(self, s):
"""
:type s: str
:rtype: bool
"""
l, r = 0, len(s)-1
while l < r:
if not s[l].isalnum():
l += 1
elif not s[r].isalnum():
r -= 1
else:
if s[l].lower() != s[r].lower():
return False
else:
l +=1; r -= 1
return True