Original title address: https://oj.leetcode.com/problems/valid-palindrome/
Test instructions
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
"Radar" is a palindrome
"Rotator" is a palindrome
"race a car"
is not a palindrome.
Note:
Are you consider that the string might is empty? This was a good question to ask during a interview.
For the purpose of this problem, we define empty string as valid palindrome.
Thinking 1: Using Python's list comprehension and the isalnum () function of string we can write a very short solution (original):
class Solution: # @param s, a string # @return A Boolean def Ispalindrome (self, s): NewS forinif i.isalnum ()] # return NewS = = News[::-1] return News[:len (News)/2] = = news[(len (News) +1)/2:][::-1]
It is necessary to note that the last line of the program is odd for news length or even common to both
News[:len (News)/2] = = news[(len (News) +1)/2:][::-1]
Problem-Solving Ideas 2: Remove characters that are not letters, then convert to lowercase, then simple palindrome judgment.
classSolution:#@param s, a string #@return A Boolean defIspalindrome (self, s):ifs = ="': returnTrueElse: STmp="' forIinchRange (0, Len (s)):ifS[i] >='a' andS[i] <='Z' orS[i] >='0' andS[i] <='9' orS[i] >='A' andS[i] <='Z': STmp+=S[i] STmp=Stmp.lower () forIinchRange (0, Len (STMP)/2): ifStmp[i]! = Stmp[len (STMP)-1-i]:returnFalsereturnTrue
Reference acknowledgements:
[1]http://www.cnblogs.com/zuoyuan/p/3765882.html
[Leetcode] Valid palindrome @ Python