Word Pattern

给一个pattern和一个string, 问这个string是否满足这个pattern.

用一个hashmap, 存pattern的每个char和string每个单词, 然后遍历pattern. 如果出现以下两种情况, 则不满足:

  1. map中包含这个pattern,但是对应的value不是string的word, 说明已存在其他的mapping.
  2. map中不包含这个pattern,但是里面已经有了这个string的word,说明已存在其他的mapping.

其他的返回true.

public boolean wordPattern(String pattern, String str) {
    if (pattern == null || str == null) {
        return false;
    }
    char[] patterns = pattern.toCharArray();
    String[] strs = str.split(" ");
    if (patterns.length != strs.length) {
        return false;
    }
    Map<Character, String> map = new HashMap<Character, String>();
    for (int i=0; i<patterns.length; i++) {
        if (map.containsKey(patterns[i])&&!map.get(patterns[i]).equals(strs[i])) {
                return false;
        } else if (!map.containsKey(patterns[i])&&map.containsValue(strs[i])) {
            return false;
        }
        map.put(patterns[i], strs[i]);
    }
    return true;
}