## DEV Community

Abhishek Chaudhary

Posted on

# 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`.

Example 1:

Input: pattern = "abba", s = "dog cat cat dog"
Output: true

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:

``````class Solution:
def wordPattern(self, pattern: str, s: str) -> bool:
patt = []
pattset = {}
i = 0
for p in pattern:
if p not in pattset:
pattset[p] = i
i += 1
patt.append(pattset[p])
words = []
wordset = {}
i = 0
for w in s.split():
if w not in wordset:
wordset[w] = i
i += 1
words.append(wordset[w])
return patt == words
``````