290. Word Pattern && 291. Word Pattern II

290. Word Pattern

Given a pattern and a string str, find if str follows the same pattern.

Here follow means a full match, such that there is a bijection between a letter in pattern and a non-emptyword in str.

Examples:

  1. pattern = "abba", str = "dog cat cat dog" should return true.
  2. pattern = "abba", str = "dog cat cat fish" should return false.
  3. pattern = "aaaa", str = "dog cat cat dog" should return false.
  4. pattern = "abba", str = "dog dog dog dog" should return false.

 

Notes:
You may assume pattern contains only lowercase letters, and str contains lowercase letters separated by a single space.

 
Hide Tags
 Hash Table
 
 
public class Solution {
    public boolean wordPattern(String pattern, String str) {
        String[] words = str.split(" ");
        if (words.length != pattern.length())
          return false;
        Map<String, Integer> wordMap = new HashMap<>();
        Map<Character, Integer> charMap = new HashMap<>();
        for (Integer i = 0; i < words.length; ++i)
          if (!Objects.equals(charMap.put(pattern.charAt(i), i), wordMap.put(words[i], i)))
            return false;
        return true;
    }
}

 

291. Word Pattern II

Problem Description:

Given a pattern and a string str, find if str 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 substring in str.

Examples:

    1. pattern = "abab", str = "redblueredblue" should return true.
    2. pattern = "aaaa", str = "asdasdasdasd" should return true.
    3. pattern = "aabb", str = "xyzabcxzyabc" should return false. 

Notes:
You may assume both pattern and str contains only lowercase letters.

 
posted @ 2016-07-08 13:45  新一代的天皇巨星  阅读(216)  评论(0编辑  收藏  举报