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 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.
这道题的做法是将符合数字和字母的符号全部都保留下来,其余的删除。然后再判断是否是回文的。
要注意当字符是空的时候算做true
we need to delete chars that are not numbers or alphabets. and the judge whether it is palindrome
class Solution:
# @param s, a string
# @return a boolean
def judge(self,s):
low=0
high=len(s)-1
while low<high:
if s[low]!=s[high]:
return False
low+=1
high-=1
return True
def isPalindrome(self, s):
i=0
count=0
s=list(s)
while i<len(s):
if (ord(s[i])>=97 and ord(s[i])<=122):
s[i]=chr(ord(s[i])-32)
if (ord(s[i])>=48 and ord(s[i])<=57) or (ord(s[i])>=65 and ord(s[i])<=90):
s[count]=s[i]
count+=1
i+=1
s=s[:count]
return self.judge(s)