1. 程式人生 > >【python】leetcode 125. Valid Palindrome (easy)

【python】leetcode 125. Valid Palindrome (easy)

125. Valid Palindrome (easy)

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]