290. Word Pattern
Given a pattern and a string s, find if s follows the same pattern
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
Constraints:
1 <= pattern.length <= 300patterncontains only lower-case English letters.1 <= s.length <= 3000scontains only lowercase English letters and spaces ’ ’.sdoes not contain any leading or trailing spaces.- All the words in
sare separated by a single space.
Solution
class Solution:
def wordPattern(self, pattern: str, s: str) -> bool:
if len(pattern) != len(s.split()):
return False
words = s.split()
map = {}
for i in range(len(pattern)):
c = pattern[i]
w = words[i]
if c in map and map[c] != w:
return False
else:
map[c] = w
return len(set(pattern)) == len(set(words))