###Description
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
Note: For the purpose of this problem, we define empty string as valid palindrome.
###Example 1:
Input: "A man, a plan, a canal: Panama"
Output: true
###Example 2:
Input: "race a car"
Output: false
###解题思路:
这道题,采用先将数字和字母都提取出来,然后再将这些字母一个从前往后,一个从后往前进行比较
###Python isalnum()方法
Python isalnum() 方法检测字符串是否由字母和数字组成。
如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False
#!/usr/bin/python
# -*- coding: UTF-8 -*-
str = "this2009"; # 字符中没有空格
print str.isalnum();
str = "this is string example....wow!!!";
print str.isalnum();
True
False
参考链接:http://www.runoob.com/python/att-string-isalnum.html
###代码:
def isPalindrome(s):
"""
:type s: str
:rtype: bool
"""
start, end = 0, len(s)-1
while start < end:
if not s[start].isalnum():
start=start+1
continue
if not s[end].isalnum():
end=end-1
continue
if s[start].lower()!=s[end].lower():
return False
start=start+1
end=end-1
return True
if __name__ == "__main__":
s = "A man, a plan, a canal: Panama"
print isPalindrome(s)