/** * 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 word in str. * * Example 1: * Input: pattern = "abba", str = "dog cat cat dog" * Output: true * * Example 2: * Input:pattern = "abba", str = "dog cat cat fish" * Output: false * * Example 3: * Input: pattern = "aaaa", str = "dog cat cat dog" * Output: false * * Example 4: * Input: pattern = "abba", str = "dog dog dog dog" * Output: false * * Notes: * You may assume pattern contains only lowercase letters, and str contains * lowercase letters separated by a single space. */ public class WordPattern290 { public boolean wordPattern(String pattern, String str) { String[] words = str.trim().split("\\s+"); if (pattern.length() != words.length) return false; Map map = new HashMap<>(); int N = pattern.length(); for (int i=0; i set = new HashSet<>(); int N = pattern.length(); for (int i=0; i