1. 程式人生 > >leetcode290:單詞模式

leetcode290:單詞模式

思想:

題目要求給定一種 pattern(模式) 和一個字串 str ,判斷 str 是否遵循相同的模式。

這裡的遵循指完全匹配,例如, pattern 裡的每個字母和字串 str 中的每個非空單詞之間存在著雙向連線的對應模式。

1.首先判斷pattern和str.split(" ")長度是否一致,若一致則跳轉2,反之返回False

2.其次先通過str.split(" ")將字串str轉換成列表形式['dog', 'cat', 'cat','dog'],然後用set()函式將其轉換成無重複元素的字典形式{‘dog’,'cat'},再計算長度

3.zip(a,b)分別從a和b中取一個元素組成一個元組,再次將組成的元組組合成一個新的迭代器。用zip()函式將pattern 和str.split(" ")組合成[(a,'dog'),(b,'cat'),(b,'cat'),(a,'dog')],接著用set()並計算長度

4.最後若三個長度都相等,則返回True 。反之返回False

class Solution:
    def wordPattern(self, pattern, str):
        """
        :type pattern: str
        :type str: str
        :rtype: bool
        """
        if len(pattern)!=len(str.split(" ")):
            return False
        a=set(str.split(" "))
        b=set(zip(pattern,str.split(" ")))
        return len(set(pattern))==len(a)==len(b)