标签:
题目:
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. 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: You may assume pattern contains only lowercase letters, and str contains lowercase letters separated by a single space.
分析:此题完全可以用一个map解答,注意下面代码中红色的部分。
public boolean wordPattern(String pattern, String str) { char[] patArr = pattern.toCharArray(); String[] strArr = str.split(" "); if (patArr.length != strArr.length) { return false; } HashMap<Character, String> hm = new HashMap<Character, String>(); for (int i = 0; i < strArr.length; i++) { if (! hm.containsKey(patArr[i])) { if (hm.containsValue(strArr[i])) { return false; } hm.put(patArr[i], strArr[i]); } else { if (! hm.get(patArr[i]).equals(strArr[i])) { return false; } } } return true; }
标签:
原文地址:http://www.cnblogs.com/lasclocker/p/4928035.html