# 290. Word Pattern

[**290. Word Pattern**](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`.

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

**Example 4:**

```
Input: pattern = "abba", s = "dog dog dog dog"
Output: false
```

**Constraints:**

* `1 <= pattern.length <= 300`
* `pattern` contains only lower-case English letters.
* `1 <= s.length <= 3000`
* `s` contains only lower-case English letters and spaces `' '`.
* `s` **does not contain** any leading or trailing spaces.
* All the words in `s` are separated by a **single space**.

***My Solutions:***

建立一个map，key是pattern里的字母，value是字母在pattern里的index。如果符合条件，key也应该是str里的单词，value是单词在str里的顺序。如果map在取两种类型的key时，得到的index/顺序不一样，return false。

```
public class Solution {
    public boolean wordPattern(String pattern, String str) {
        String[] strs = str.split(" ");
        if (strs.length != pattern.length()) return false;
        Map m = new HashMap();
        for (Integer i=0; i < strs.length; i++) {
            if (m.put(pattern.charAt(i), i) != m.put(strs[i], i)) return false;
        }
        return true;
    }
}
```
