题目链接: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。最终返回该个数。

三. 心得

在束手无策的题目中学习和进步,共勉。

posted on 2022-02-25 11:54  SelmaS  阅读(35)  评论(0编辑  收藏  举报