Skip to content
prdlk
Esc
↑↓navigate↵open⌘Jpreview
On this page

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 <= 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:
        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))

Last updated on October 2, 2026

Was this page helpful?