題目:
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.
給定一個模式跟一個字串,判斷字串是否遵循格式
ex:input: pattern = "abba",s = "dog cat cat dog"=>output: true
input: pattern = "abba", s = "dog cat cat fish"=>output: false
這題感覺解法上很像205.
都是建立hash map判斷兩字串元素是否為一對一關係
不過這次的關係會是字元對應到詞
class Solution:
def wordPattern(self, pattern: str, s: str) -> bool:
s=s.split(' ')
if len(s)!=len(pattern):
return False
d={}
for i in range(len(pattern)):
if pattern[i] not in d:
if s[i] in d.values():
return False
else:
d[pattern[i]]=s[i]
else:
if d[pattern[i]]!=s[i]:
return False
return True
pattern表模式,而split字串s讓其變為詞語陣列,設dictionary為d存放對應關係
假如pattern和s長度不同就直接return False
畢竟長度不同怎麼可能對應得到pattern
從頭開始存放關係(pattern[i]是key,s[i]是value),會出現以下幾種可能
**(1)pattern[i]不存在key中且s[i]不存在value中:**發現新對應關係,紀錄
**(2)pattern[i]不存在key中但s[i]存在value中:**發現非一對一關係,return False
**(3)pattern[i]存在key中且對應值和s[i]相同:**發現重複的關係而已,無視
**(4)pattern[i]存在key中但對應值和s[i]不同:**發現非一對一關係,return False
若紀錄完都沒發現非一對一關係就return True
沒錯這題解法真的很像很像205.
最後執行時間28ms(faster than 96.83%)
那我們下題見