From cbc858b667d63dbe9f4b5c47a93cf05e4b3ba046 Mon Sep 17 00:00:00 2001 From: Prad Nukala Date: Fri, 2 Oct 2026 12:42:01 -0400 Subject: [PATCH] feat(work): add 290.word-pattern solution --- work/1/Easy/Hash Table/290.word-pattern.py | 83 ++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 work/1/Easy/Hash Table/290.word-pattern.py diff --git a/work/1/Easy/Hash Table/290.word-pattern.py b/work/1/Easy/Hash Table/290.word-pattern.py new file mode 100644 index 0000000..4d12e33 --- /dev/null +++ b/work/1/Easy/Hash Table/290.word-pattern.py @@ -0,0 +1,83 @@ +""" +290. Word Pattern +Difficulty: Easy +https://leetcode.com/problems/word-pattern/ + +────────────────────────────────────────────────── + +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. Specifically: + + • Each letter in pattern maps to exactly one unique word in s. + + • Each unique word in s maps to exactly one letter in pattern. + +• 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 + + + +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. +""" + + +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))