# 290. Word Pattern

#### Easy

***

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

&#x20;

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

&#x20;

**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**.

```python
class Solution:
    def wordPattern(self, pattern: str, s: str) -> bool:
        arr = s.split()
        vals = set()
        if len(pattern) != len(arr):
            return False
        d = {}
        for index in range(len(arr)):
            if pattern[index] in d:
                if d[pattern[index]] != arr[index]:
                    return False
            elif arr[index] in vals:
                return False
            else:
                vals.add(arr[index])
                d[pattern[index]] = arr[index]
        return True
```
