[LeetCode] NO. 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-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.
[题目解析] 思路比较简单,pattern的字符和str划分后的单词是一一对应的关系的时候返回true,否则就为false,可以用map数据结构来实现。要注意的是,map中不同的key可以对应相同的value,需要注意下。
public boolean wordPattern(String pattern, String str) { if(str.split(" ").length != pattern.length()) return false; Map<Character, String> map = new HashMap<Character,String>(); Map<String, Boolean> valuemap = new HashMap<String,Boolean>(); char p_arr[] = pattern.toCharArray(); String str_arr[] = str.split(" "); int idx = 0; while(idx < p_arr.length){ if(!map.containsKey(p_arr[idx])){ if(valuemap.containsKey(str_arr[idx])){ return false; } map.put(p_arr[idx], str_arr[idx]); valuemap.put(str_arr[idx], true); }else if(!map.get(p_arr[idx]).equalsIgnoreCase(str_arr[idx])){ return false; } idx++; } return true; }

浙公网安备 33010602011771号