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.
题意:
给一个string,判断是否回文,忽略非字母非数字的字符
思路:
string为空时的判断
去掉标点等非字母
全转换成小写
两个指针分别首尾开始比较是否一样
参考:
很简洁的代码:
http://chaoren.is-programmer.com/posts/43189.html
class Solution(object):
def isPalindrome(self, s):
"""
:type s: str
:rtype: bool
"""
#is s is None:
#return None
new=[]
s=s.lower()
for i in s:
if '0'<=i<='9' or 'a'<=i<='z':
new.append(i)
return new==new[::-1]