1. 程式人生 > >LeetCode刷題記錄——第290題(單詞模式)

LeetCode刷題記錄——第290題(單詞模式)

題目描述

給定一種 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))