diff --git a/apps/docs/content/(01-linear-structures)/hash-table/290-word-pattern.mdx b/apps/docs/content/(01-linear-structures)/hash-table/290-word-pattern.mdx new file mode 100644 index 0000000..d5131a4 --- /dev/null +++ b/apps/docs/content/(01-linear-structures)/hash-table/290-word-pattern.mdx @@ -0,0 +1,57 @@ +--- +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)) +``` diff --git a/apps/docs/content/appendix/(1-data-structures)/string.mdx b/apps/docs/content/appendix/(1-data-structures)/string.mdx index 6568310..b563eab 100644 --- a/apps/docs/content/appendix/(1-data-structures)/string.mdx +++ b/apps/docs/content/appendix/(1-data-structures)/string.mdx @@ -3,7 +3,7 @@ title: "String" list: "https://leetcode.com/problem-list/string/" icon: quote sidebar: - badge: '17' + badge: '18' --- :::note