一隻箱子裡的貓,看著電腦螢幕

Schrödinger's Programmer

奔跑吧工程師,趁年輕跑得越遠越好

[LeetCode] #290 Word Pattern (Easy)

LeetCode 第 290 題 Word Pattern,難度 Easy

Ray

LeetCode #290 run result

用 Python3 解 LeetCode 系列,Word Pattern,屬於 Easy

原始題目

Given a pattern and a string s, find if s follows the same pattern.

Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty word in s.

Example 1:

Input: pattern = "abba", s = "dog cat cat dog"
Output: true
Example 2:

Input: pattern = "abba", s = "dog cat cat fish"
Output: false

Example 3:

Input: pattern = "aaaa", s = "dog cat cat dog"
Output: false

Example 4:

Input: pattern = "abba", s = "dog dog dog dog"
Output: false

題目分析

  • 給你一個模式patterns
  • pattern 裡的每個字母對應s一個單字,相同字母單字必須一樣
  • 判斷s是否符合pattern

解題過程

  1. 長度判斷,如果pattern字母數量和s單字數量不同,一定就是 false
  2. mapping_dict的 key 是pattern的字母,值是同 index 的s內容
  3. exist_check_dict的 key 是s的單字,值是pattern的字母
  4. 遍歷pattern所有值
  5. 檢查當前pattern字母為 key 的mapping_dict資料,和s中相同位置的單字有沒有一樣
  6. 檢查和當前pattern字母同 index 的 s 單字所對應的字母和exist_check_dict紀錄中的字母有沒有一樣
class Solution:
    def wordPattern(self, pattern: str, s: str) -> bool:
        # 長度判斷,如果不同長度一定就是 false
        words_list = s.split(' ')
        words_len = len(words_list)
        pattern_len = len(pattern)
        if words_len != pattern_len:
            return False
        
        mapping_dict = dict()
        exist_check_dict = dict()

        for index, val in enumerate(pattern):
            
            # 如果 pattern key 存在
            if val in mapping_dict.keys():
                
                # 檢查 pattern 字母代表的單字是否一致
                if mapping_dict[val] != words_list[index]:
                    return False
            else:
                # 檢查有沒有重複的單字在不同字母中
                if words_list[index] in exist_check_dict:
                    if exist_check_dict[words_list[index]] != val:
                        return False
                else :
                    mapping_dict[val] = words_list[index]
                    exist_check_dict[words_list[index]] = val

        return True

結果

result

最新文章

Category

Tag