---
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))
```
