LeetCode刷題記錄——第290題(單詞模式)
阿新 • • 發佈:2019-01-13
題目描述
給定一種 pattern(模式) 和一個字串 str ,判斷 str 是否遵循相同的模式。
這裡的遵循指完全匹配,例如, pattern 裡的每個字母和字串 str 中的每個非空單詞之間存在著雙向連線的對應模式。
示例1:
輸入: pattern = “abba”, str = “dog cat cat dog”
輸出: true
示例 2:
輸入:pattern = “abba”, str = “dog cat cat fish”
輸出: false
示例 3:
輸入: pattern = “aaaa”, str = “dog cat cat dog”
輸出: false
示例 4:
輸入: pattern = “abba”, str = “dog dog dog dog”
輸出: false
說明:
你可以假設 pattern 只包含小寫字母, str 包含了由單個空格分隔的小寫字母。
思路分析
- 為了匹配,需要用split方法,將str中的字串分開成列表
- 如果pattern的長度和split之後列表的長度不等,那麼不可能匹配
- 滿足長度相等的條件時,還要滿足,一一對應的條件,如何刻畫一一對應條件呢?利用zip方法,set(zip(pattern,l))將pattern和l的對應元素融合起來,然後用元組的形式,保證其唯一性。
程式碼示例
class Solution:
def wordPattern(self, pattern, str):
"""
:type pattern: str
:type str: str
:rtype: bool
"""
l = str.split(' ')
if len(l) != len(pattern):
return False
else:
return len(set(zip(pattern, l))) == len(set(pattern)) == len(set(l))