题目链接:https://leetcode-cn.com/problems/count-common-words-with-one-occurrence/
前言:没想出怎么解决这道题,参考了评论区里大佬的做法,记录下学到的东西。
一. 函数学习
1.HashMap的定义。
/*HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。 HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。 HashMap 是无序的,即不会记录插入的顺序。*/ Map<String, Integer> map1 = new HashMap<>();
2.插入元素。
/*getOrDefault() 方法获取指定 key 对应的value,如果找不到 key ,则返回设置的默认值。*/ for(String v:words1) map1.put(v,map1.getOrDefault(v,0)+1);
3.检查 HashMap 是否存在特定的键 key。
HashMap<Integer, String> sites = new HashMap<>(); sites.put(1, "Google"); sites.put(2, "Runoob"); //检查 key 为 1 是否存在 if(sites.containsKey(1)) { System.out.println("key 为 1 存在于 sites 中"); }
二. 题解思路
用两个哈希表分别统计word1与word2中字符串的出现次数。
随后,遍历第一个哈希表中的字符串,检查它在两数组中的出现次数是否均为1。
同时统计出现过一次的公共字符串个数,若某字符串在两个数组中均只出现一次,则将个数加1。最终返回该个数。
三. 心得
在束手无策的题目中学习和进步,共勉。