Given a pattern
and a string str
, find if str
follows the same pattern.
Examples:
- pattern =
"abba"
, str ="dog cat cat dog"
should return true. - pattern =
"abba"
, str ="dog cat cat fish"
should return false. - pattern =
"aaaa"
, str ="dog cat cat dog"
should return false. - pattern =
"abba"
, str ="dog dog dog dog"
should return false.
Notes:
pattern
contains only lowercase alphabetical letters, andstr
contains words separated by a single space. Each word instr
contains only lowercase alphabetical letters.- Both
pattern
andstr
do not have leading or trailing spaces. - Each letter in
pattern
must map to a word with length that is at least 1.
用两个Hashmap!
1 public boolean wordPattern(String pattern, String str) 2 { 3 String[] words; 4 Map<String, Character> map1 = new HashMap<>(); 5 Map<Character,String> map2 = new HashMap<>(); 6 words = str.split(" "); 7 if(pattern.length()!=words.length) return false; 8 for(int i = 0; i<words.length;i++) 9 { 10 if(map1.containsKey(words[i])) 11 { 12 Character index = map1.get(words[i]); 13 if (index != pattern.charAt(i)) return false; 14 } 15 16 17 if(map2.containsKey(pattern.charAt(i))) 18 { 19 String index = map2.get(pattern.charAt(i)); 20 if (!index.equals(words[i])) return false; 21 } 22 23 24 map1.put(words[i],pattern.charAt(i)); 25 map2.put(pattern.charAt(i),words[i]); 26 } 27 return true; 28 29 }