题目
有两个字符串数组
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。这个计数器统计的值就是两个数组中共同出现的单词数量