--- title: '290. Word Pattern' description: Given a pattern and a string s, find if s follows the same pattern icon: dot topics: - { name: "Hash Table", slug: "hash-table" } - { name: "String", slug: "string" } issue: "https://github.com/prdlk/leetcode/issues/35" sidebar: label: 'Word Pattern' badge: 'Easy' --- ### 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 <= 300` - `pattern` contains only lower-case English letters. - `1 <= s.length <= 3000` - `s` contains only lowercase English letters and spaces ' '. - `s` does not contain any leading or trailing spaces. - All the words in `s` are separated by a single space. ## Solution ```py 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)) ```