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.
Note:
Have you consider that the string might be empty? This is a good question to ask during an interview.
For the purpose of this problem, we define empty string as valid palindrome.
判断一个字符串是不是回文串~设两个指针,从两边分别往中间走,进行两两配对,注意判断当前字符是不是字母和数字类型,还有就是注意大小写的情况~
class Solution:
# @param s, a string
# @return a boolean
def isPalindrome(self, s):
if s is None or len(s) == 0: return True
left, right = 0, len(s) - 1
while left < right:
if not s[left].isalnum():
left += 1
elif not s[right].isalnum():
right -= 1
else:
if s[left].lower() != s[right].lower():
return False
left += 1; right -= 1
return True