题目:
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(object):
def isPalindrome(self, s):
"""
:type s: str
:rtype: bool
"""
if s=='':
return True
i = 0; j = len(s)-1
while i<j:
if s[i].isalnum() and s[j].isalnum():#.isalnum()判断是否为数字或字母
if s[i].lower()!=s[j].lower():#.lower()变为小写,较好比较
return False
else:
i+=1
j-=1
elif not s[i].isalnum() and s[j].isalnum():
i+=1
else:
j-=1
return True
a = Solution()
print a.isPalindrome("A man, a plan, a canal: Panama")