Java算法分析

115 阅读1分钟

题目

有两个字符串数组 words1 和 words2 ,统计出两个字符串数组中 都恰好出现一次 的字符串的数目

代码实现

 public int countWords(String[] words1, String[] words2) {
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        HashMap<String, Integer> map2 = new HashMap<String, Integer>();
        int count = 0;
        for (String s : words1) {
            map.put(s, map.getOrDefault(s, 0) + 1);
        }
        for (String s : words2) {
            map2.put(s, map2.getOrDefault(s, 0) + 1);
        }
        for (String s : map.keySet()) {
            if (map.getOrDefault(s, 0) == 1 && map2.getOrDefault(s, 0) == 1) {
                count++;
            }
        }
        return count;
    }

代码分析

使用两个HashMap来分别记录两个数组中每个单词出现的次数。一共分为三步

1.通过遍历第一个字符串数组words1,将每个单词作为键,出现次数作为值存入map中。

2.通过遍历第二个字符串数组words2,同样将每个单词作为键,出现次数作为值存入map2中。

3.再次遍历map的键集合,如果某个单词在map和map2中的出现次数都为1,那么将计数器count加1。这个计数器统计的值就是两个数组中共同出现的单词数量