首页 > 编程语言 >【教3妹学编程-算法题】统计出现过一次的公共字符串

【教3妹学编程-算法题】统计出现过一次的公共字符串

时间:2024-01-12 19:32:53浏览次数:24  
标签:编程 words2 words1 妹学 算法 freq1 数组 字符串 出现

【教3妹学编程-算法题】统计出现过一次的公共字符串_数组

3妹:哈哈哈哈哈哈,太搞笑了~ 呵呵呵呵呵呵
2哥:3妹干嘛呢, 笑的这么魔性!
3妹:在看王牌对王牌,老搞笑了
2哥:这季好像没有贾玲吧。
3妹:是啊,听说贾玲去导电影了, 还狂瘦了100斤呢, 哎,我也该减减肥了。
2哥:切,你每隔几天就会说要减肥,也没见你减啊
3妹:不吃饱哪有力气减肥,我每天还要刷题、找工作,多辛苦啊。
2哥:说到刷题, 今天的题目做了没呢?
3妹:嗯嗯,没呢没呢,现在就去做。

【教3妹学编程-算法题】统计出现过一次的公共字符串_数组_02

 1题目: 

给你两个字符串数组 words1 和 words2 ,请你返回在两个字符串数组中 都恰好出现一次 的字符串的数目。

示例 1:

输入:words1 = ["leetcode","is","amazing","as","is"], words2 = ["amazing","leetcode","is"]
输出:2
解释:

  • "leetcode" 在两个数组中都恰好出现一次,计入答案。
  • "amazing" 在两个数组中都恰好出现一次,计入答案。
  • "is" 在两个数组中都出现过,但在 words1 中出现了 2 次,不计入答案。
  • "as" 在 words1 中出现了一次,但是在 words2 中没有出现过,不计入答案。

    所以,有 2 个字符串在两个数组中都恰好出现了一次。

    示例 2:

输入:words1 = ["b","bb","bbb"], words2 = ["a","aa","aaa"]
输出:0
解释:没有字符串在两个数组中都恰好出现一次。
示例 3:

输入:words1 = ["a","ab"], words2 = ["a","a","a","ab"]
输出:1
解释:唯一在两个数组中都出现一次的字符串是 "ab" 。

提示:

1 <= words1.length, words2.length <= 1000
1 <= words1[i].length, words2[j].length <= 30
words1[i] 和 words2[j] 都只包含小写英文字母。

 2思路: 

【教3妹学编程-算法题】统计出现过一次的公共字符串_字符串数组_03

哈希表,
我们用两个哈希表分别统计 word1与 word2 中字符串的出现次数。

随后,我们遍历第一个哈希表中的字符串,检查它在 word1与 word2 中的出现次数是否均为 1。与此同时,我们统计出现过一次的公共字符串个数,如果某个字符串在两个数组中均只出现一次,那么我们将个数加 1。最终,我们返回该个数作为答案。

 3java代码: 


class Solution {
    public int countWords(String[] words1, String[] words2) {
        // 统计字符串出现频率
        Map<String, Integer> freq1 = new HashMap<>();
        Map<String, Integer> freq2 = new HashMap<>();
        for (String w : words1) {
            freq1.put(w, freq1.getOrDefault(w, 0) + 1);
        }
        for (String w : words2) {
            freq2.put(w, freq2.getOrDefault(w, 0) + 1);
        }


        // 遍历 words1 出现的字符并判断是否满足要求
        int res = 0;
        for (String w : freq1.keySet()) {
            if (freq1.get(w) == 1 && freq2.getOrDefault(w, 0) == 1) {
                res++;
            }
        }
        return res;
    }
}

标签:编程,words2,words1,妹学,算法,freq1,数组,字符串,出现
From: https://blog.51cto.com/u_6813689/9221760

相关文章

  • AI烟火检测算法解决方案
    一、背景需求根据国家消防救援局公布的数据显示,2023年共接报处置各类警情213.8万起,督促整改风险隐患397万处。火灾危害巨大,必须引起重视。传统靠人工报警的方法存在人员管理难、场地数量多且分散等问题,无法有效发现险情降低火灾损失。利用智能分析网关V4烟火检测算法,可以及时准确地......
  • 【深度学习】一维数组的 K-Means 聚类算法理解
    刚看了这个算法,理解如下,放在这里,备忘,如有错误的地方,请指出,谢谢需要做聚类的数组我们称之为【源数组】需要一个分组个数K变量来标记需要分多少个组,这个数组我们称之为【聚类中心数组】及一个缓存临时聚类中心的数组,我们称之为【缓存聚类中心数组】然后初始化一个K长度的数组,值随机(尽......
  • 无涯教程-JSON - Python编程
    本章介绍如何使用Python编程语言编码和解码JSON对象。让我们从准备环境开始,以使用Python进行JSON编程。在开始使用Python编码和解码JSON之前,您需要安装任何可用的JSON模块,在本教程中,我们已经下载并安装了Demjson,如下所示-$tarxvfzdemjson-1.6.tar.gz$cddemjson-1.6$pyt......
  • 无涯教程-JSON - Perl编程
    本章介绍如何使用Perl编程语言编码和解码JSON对象,让我们从准备环境开始,开始使用PerlforJSON进行编程。在使用Perl编码和解码JSON之前,需要安装JSON模块,该模块可以从CPAN获得。下载JSON-2.53.tar.gz或任何其他最新版本后,请按照以下步骤操作-$tarxvfzJSON-2.53.tar.gz$cdJSO......
  • 排序算法,冒泡,选择,插入
    比较慢:冒泡排序:列表每两个相邻的数,如果前⾯⽐后⾯⼤,则交换这两个数。⼀趟排序完成后,则⽆序区减少⼀个数,有序区增加⼀个数。代码关键点:趟、⽆序区范围#include"stdio.h"intmain(){intarr[]={8,32,22,73,95,13,9,82,23,46,71,52,90,53,77,75,65,64,......
  • 文心一言 VS 讯飞星火 VS chatgpt (176)-- 算法导论13.3 5题
    五、用go语言,考虑一棵用RB-INSERT插人n个结点而成的红黑树。证明:如果n>1,则该树至少有一个红结点。文心一言:要证明这个问题,我们首先需要理解红黑树的性质。红黑树是一种自平衡二叉搜索树,它在插入和删除操作中维护一些属性,以保证搜索、插入和删除操作的时间复杂性为O(logn)。红......
  • 文心一言 VS 讯飞星火 VS chatgpt (176)-- 算法导论13.3 5题
    五、用go语言,考虑一棵用RB-INSERT插人n个结点而成的红黑树。证明:如果n>1,则该树至少有一个红结点。文心一言:要证明这个问题,我们首先需要理解红黑树的性质。红黑树是一种自平衡二叉搜索树,它在插入和删除操作中维护一些属性,以保证搜索、插入和删除操作的时间复杂性为O(logn)......
  • 编程有悟
    1.自己编程可能条理清晰,版本切换自如,可是更新出去,一定要减少低级错误(更新错版本)。2.尤其当把自己的代码拷给别人的时候,拷贝错自己倒没什么,可是别人的怒气自己还是要掂量掂量哈~。3.自我约束,自我管理,自我准确性提高。......
  • 编程有感:所欠的都会还的
    1.首先在进行winform的窗体和控件自动缩小放大适应的时候,遇到了写图像的内存异常错误;每次遇到棘手问题,都会紧张,慌乱,思路不是很冷静,急于求成,在许多地方反而落下了许多的bug;那天放弃这个做法之后,昨天编程过程中又碰到一个类似的问题,而这两个问题的病症所在都是一个简单的地方......
  • 编程有感
    1.在思路通畅情况下,程序很快就能编写完成。2.但是经过大家使用,会暴露出诸多问题。bug接二连三的出现,你都会不相信这是自己编写出来的软件。3.所以测试还需要细心,和一步步测试。有一个详单计划表最好。4.当后来在程序中加了某个功能之后,测试就不仅仅是测试该项功能了,或许你加的这个......