每日一題20201216(290. 單詞規律)
阿新 • • 發佈:2020-12-16
290. 單詞規律
思路
首先要理解清楚題目的意思,就好像孫亞龍給盧本偉起外號一樣,盧本偉的外號,大家都知道:五五開
但是你不能明著叫,所以你用aab進行代替,這個題目可以說很符合這個場景了!所以現在要做的是,判斷五五開是不是aab,判斷aab是不是五五開。
首先我們維護2個map, 一個存放a->五的對映關係, 一個存放五->a的對映關係。
為什麼需要2個map, 你想,adb->五五開, 這樣的對映,你只儲存了a->五,並沒有儲存五->a,所以adb->五五開也能通過,但這不符合題意。
class Solution: def wordPattern(self, pattern: str, s: str) -> bool: # mp1: a -> wu mp1 = {} # mp2: wu -> a mp2 = {} # 切割字串為陣列 b = s.split(" ") # 如果長度不一樣 直接return False if len(pattern) != len(b): return False # 長度一樣可以盡情zip for x, y in zip(pattern, b): # a -> wu 如果檢測失敗,直接return if mp1.get(x) is not None and mp1.get(x) != y: return False # wu -> a 如果檢測失敗, 直接return if mp2.get(y) is not None and mp2.get(y) != x: return False # 建立a->wu和wu->a的對映關係 mp1[x] = y mp2[y] = x return True
寫完題解了,終於可以坐下了。