【LeetCode每日一题】2085. 统计出现过一次的公共字符串(哈希表)

2024-1-12

文章目录

        • [2085. 统计出现过一次的公共字符串](https://leetcode.cn/problems/count-common-words-with-one-occurrence/)
          • 思路:哈希表计算

2085. 统计出现过一次的公共字符串

【LeetCode每日一题】2085. 统计出现过一次的公共字符串(哈希表)_第1张图片

思路:哈希表计算

1.用两个哈希表分别统计word1和word2中字符出现的次数

2.遍历words1中的每个单词x,并使用count1.put(x,count1.getOrDefault(x,0)+1)将单词x作为键,将其在count1中对应的值加1存储起来,count1.getOrDefault(x,0)表示获取count1中键为x的值,如果不存在则返回默认值0。

3.同理遍历word2,同样操作

4.遍历count1的键集合count1.keySet(),对于每个键x,判断count1.get(x)是否等于1且count2.getOrDefault(x,0)是否等于1。如果满足条件,则将res加1。

    public int countWords(String[] words1, String[] words2) {
        Map<String,Integer> count1 = new HashMap<>();
        Map<String,Integer> count2 = new HashMap<>();
        //存储每个单词在对应数组中出现的次数
        for (String x:
             words1 ) {
            // 遍历第一个字符串数组words1,将单词及其出现次数存储到count1中
            count1.put(x,count1.getOrDefault(x,0)+1);
        }
        for (String x:
                words2 ) {
            // 遍历第二个字符串数组words2,将单词及其出现次数存储到count2中
            count2.put(x,count2.getOrDefault(x,0)+1);
        }
        int res = 0;
        //记录相同单词的数量
        for (String x:
             count1.keySet()) {
            // 遍历count1的键集合,判断在count1中出现次数为1且在count2中也出现次数为1的单词
            if (count1.get(x)==1&&count2.getOrDefault(x,0)==1){
                res++;
            }
        }
        return res;
    }

点击移步博客主页,欢迎光临~

偷cyk的图

你可能感兴趣的:(LeetCode,leetcode,散列表,算法)