290. Word Pattern
Given a
patternand a strings, find ifsfollows the same pattern.Here follow means a full match, such that there is a bijection between a letter in
patternand a non-empty word ins. Specifically:
- Each letter in
patternmaps to exactly one unique word ins.- Each unique word in
smaps to exactly one letter inpattern.- No two letters map to the same word, and no two words map to the same letter.
Example 1:
Input: pattern = "abba", s = "dog cat cat dog"
Output: true
Explanation:
The bijection can be established as:
'a'maps to"dog".'b'maps to"cat".Example 2:
Input: pattern = "abba", s = "dog cat cat fish"
Output: false
Example 3:
Input: pattern = "aaaa", s = "dog cat cat dog"
Output: false
def wordPattern(self, pattern: str, s: str) -> bool:
d = {}
s = s.split(' ')
if len(pattern) != len(s):
return False
for i in range(len(pattern)):
if pattern[i] in d:
if d[pattern[i]] != s[i]:
return False
else:
if s[i] in d.values():
return False
d[pattern[i]] = s[i]
return True