标签:
Given a pattern
and a string str
, find if str
follows the same pattern.
Examples:
"abba"
, str = "dog cat cat dog"
should return true."abba"
, str = "dog cat cat fish"
should return false."aaaa"
, str = "dog cat cat dog"
should return false."abba"
, str = "dog dog dog dog"
should return false.
Notes:
pattern
contains only lowercase alphabetical letters, and str
contains words separated by a single space. Each word in str
contains only lowercase alphabetical letters.pattern
and str
do not have leading or trailing spaces.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 }
标签:
原文地址:http://www.cnblogs.com/hygeia/p/4858307.html