Word Pattern
给一个pattern和一个string, 问这个string是否满足这个pattern.
用一个hashmap, 存pattern的每个char和string每个单词, 然后遍历pattern. 如果出现以下两种情况, 则不满足:
- map中包含这个pattern,但是对应的value不是string的word, 说明已存在其他的mapping.
- map中不包含这个pattern,但是里面已经有了这个string的word,说明已存在其他的mapping.
其他的返回true.
public boolean wordPattern(String pattern, String str) { if (pattern == null || str == null) { return false; } char[] patterns = pattern.toCharArray(); String[] strs = str.split(" "); if (patterns.length != strs.length) { return false; } Map<Character, String> map = new HashMap<Character, String>(); for (int i=0; i<patterns.length; i++) { if (map.containsKey(patterns[i])&&!map.get(patterns[i]).equals(strs[i])) { return false; } else if (!map.containsKey(patterns[i])&&map.containsValue(strs[i])) { return false; } map.put(patterns[i], strs[i]); } return true; }
Leave A Comment