【python】leetcode 125. Valid Palindrome (easy)
阿新 • • 發佈:2018-12-12
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
一 我的最優解
驗證是否迴文
1 、忽略大小寫、空格和標點等:用replace和正則轉化成只有小寫字元
使用正則模組re,匹配 \W, 替換成 ''
2 、使用切片s[::-1] reverse字串
class Solution: def isPalindrome(self, s): """ :type s: str :rtype: bool """ s = s.lower().replace(' ','') s = re.sub(r'[\W]','',s) if(s == s[::-1]): return True return False
Runtime: 52 ms, faster than 99.16% of Python3
二 discussion裡看到的
分析:和我的程式碼含義上是一樣的,我的前兩行是下面的第一行,後兩行是下面的第二行。
使用listcomp生成新list,str自帶的方法isalnum()檢測字串是否由字母和數字組成
def isPalindrome(self, s): lst = [char.lower() for char in s if char.isalnum()] return lst == lst[::-1]