leetcode 290. Word Pattern

原题链接: 290. Word Pattern

【思路】

将 pattern 中的每个字符作为 hashmap 的 key,str 中的每个单词作为对应的 value,每次判断在 hashmap 中 pattern 所是否存在所对应的 key。如果有,说明之前 pattern 中已经有一个字符和 str 中的某个字母构成映射。如果没有,那么就要将这对映射添加到 hashmap 中,但注意在添加之前也要保证 value 值也是唯一的:

    public boolean wordPattern(String pattern, String str) {
        String[] words = str.split(" ");
        HashMap<Character, String> map = new HashMap<Character, String>();
        HashSet<String> set = new HashSet<String>();
        if (words.length != pattern.length()) return false;
        for (int i = 0; i < words.length; i++) {
            if (map.containsKey(pattern.charAt(i))) {
                if (!map.get(pattern.charAt(i)).equals(words[i])) {
                    return false;
                }
            } else {
                if (map.containsValue(words[i])) return false;
                map.put(pattern.charAt(i), words[i]);
            }
        }
        return true;
    }
29 / 29  test cases passed. Runtime: 2 ms  Your runtime beats 70.11% of javasubmissions.

你可能感兴趣的:(java,LeetCode,HashMap)