leetcode290:單詞模式
阿新 • • 發佈:2018-11-11
思想:
題目要求給定一種 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)