leetcode 290. Word Pattern-单词模式|哈希表

本文详细介绍了如何使用Java解决WordPattern问题,通过构建哈希表和集合来判断字符串和模式之间的映射关系,确保了唯一性和一致性。提供了一个高效的解决方案,并通过测试案例验证了算法的有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原题链接: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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值