力扣2085统计出现过一次的公共字符串-程序员宅基地

技术标签: 算法  c++  java  leetcode  

题目来源

力扣2085统计出现过一次的公共字符串

题目概述

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

思路分析

思路一. 可以使用两个map分别存储两个字符串数组中所有字符串出现的数量,最后统计两个map中value均为1的字符串。

思路二. 使用一个map统计words1的字符,遍历words2,如果遍历到的字符串在words1中出现的次数为1则打上标记,如果已经被打上标记,从map删除这个字符串,最后统计被打上标记的字符串个数。

代码实现

java实现

class Solution {
    public int countWords(String[] words1, String[] words2) {
        Map<String,Integer> map = new HashMap<>();
        for (String str : words1) {
            map.put(str, map.getOrDefault(str, 0) + 1);
        }
        int count = 0;
        for (String str : words2) {
            Integer word1Count = map.get(str);
            if (word1Count == null) {
                continue;
            }
			// 打上标记,计数加一
            if (word1Count == 1) {
                map.put(str, -1);
                count++;
            }
			// 删除字符串,计数减一
            if(word1Count == -1) {
                map.remove(str);
                count--;
            }
        }
        return count;
    }
}

c++实现

class Solution {
public:
    int countWords(vector<string>& words1, vector<string>& words2) {
        unordered_map<string, int> map;
        for (string str : words1) {
            map[str]++;
        }
        int count = 0;
        for (string str : words2) {
			// 打上标记,计数加一
            if (map[str] == 1) {
                map[str] = -1;
                count++;
				// 删除标记,计数减一
            }else if (map[str] == -1) {
                map[str]--;
                count--;
            }
        }
        return count;
    }
};
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_56460466/article/details/135545187

智能推荐

Android事件分发机制详解_android 事件分发机制-程序员宅基地

文章浏览阅读6.8k次。目录1. 基础认知1.1 事件分发的对象是谁?答:点击事件(Touch事件)定义 当用户触摸屏幕时(View 或 ViewGroup派生的控件),将产生点击事件(Touch事件)Touch事件的相关细节(发生触摸的位置、时间等)被封装成MotionEvent对象事件类型(4种)事件类型具体动作MotionEvent.ACTION_DOWN按下View(所有事件的开始)MotionEvent.ACT..._android 事件分发机制

Altium Designer-打开丝印层、位号,不显示器件位号问题_ad软件怎么只显示参数不显示位号-程序员宅基地

文章浏览阅读9.5k次,点赞2次,收藏3次。背景收到一个PCB雏形,打开后只显示丝印层的器件轮廓,不显示位号,而位号并没有隐藏。Hidden是隐藏,大家都知道。Draft是草图。(布线选这个的效果就是,下面附了一张图方便理解)于是也就不难理解Final,可以解释为定稿、成品,也就是显示的丝印的意思了。解决双击左下角的打开"Show/Hide"选项卡,把Strings从"Hidden"改为"Final",然后OK...._ad软件怎么只显示参数不显示位号

【剑指Offer-Java】机器人的运动范围_机器人的运动范围 剑指offer acm java-程序员宅基地

文章浏览阅读130次。机器人的运动范围题目描述思路实现题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?思路设置..._机器人的运动范围 剑指offer acm java

js自动引入js,css_js中的css调查-程序员宅基地

文章浏览阅读272次。js自动引入js,css Expedia Group Technology —软件 (EXPEDIA GROUP TECHNOLOGY — SOFTWARE)TLDR: Using a Gatsby starter setup I investigated four CSS-in-JS libraries, Emotion, styled-components, Treat and JSS. I..._createusestyles写事件

python3中实现tar_python-3.x – 如何在Python3中将字符串添加到tarfile-程序员宅基地

文章浏览阅读105次。我有问题在python中添加str到tar arhive.在python 2中我使用了这样的方法:fname = "archive_name"params_src = "some arbitrarty string to be added to the archive"params_sio = io.StringIO(params_src)archive = tarfile.open(fname+..._python3.x tarfile.member

随便推点

大数据学习笔记(五)_YARN资源调度框架_yran application -kill-程序员宅基地

文章浏览阅读171次。一:YARN 产生背景MapReduce1.x 的特点master/slave 架构:JobTracker/TaskTrackerJobTracker: 单点、压力大仅仅只能够支持mapreduce作业正因为有这样的问题,催生出 YARN二:YARN 概述官网介绍:http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.15.1/hadoop-yarn/hadoop-yarn-site/YARN.htmlMapReduce ha_yran application -kill

http和https工具类简单封装-程序员宅基地

文章浏览阅读2.8k次。package com.yuxing.common.util.http;import org.apache.commons.io.IOUtils;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.HttpStatus;import org.apache

React Native - Keyboard API使用详解(监听处理键盘事件)_keyboarddidshow-程序员宅基地

文章浏览阅读3.5k次。参考:React Native - Keyboard API使用详解(监听处理键盘事件)当我们点击输入框时,手机的软键盘会自动弹出,以便用户进行输入。但有时我们想在键盘弹出时对页面布局做个调整,或者在程序中使用代码收起这个软键盘,这些借助 React Native 框架提供的 Keyboard API 就可以实现。一、Keyboard API 提供的方法Keyboard API 提供如下的静态函数供开发者使用。1,addListener(eventName, callback)(1)这个函数_keyboarddidshow

特征点匹配——使用基础矩阵、单应性矩阵的RANSAC算法去除误匹配点对_ransac algorithm didn't find enough point correspo-程序员宅基地

文章浏览阅读1k次。参考:https://blog.csdn.net/lhanchao/article/details/52849446_ransac algorithm didn't find enough point correspondences

arcpy.mapping 类列表_elementpositionx-程序员宅基地

文章浏览阅读2.6k次。arcpy.mapping 类可使用地图文档 (.mxd) 或图层文件 (.lyr) 中的不同对象类型的各种方法和属性。此文档可专门用作快速参考。有关详细信息,请使用链接跳转至各帮助页面。arcpy.mapping 类 DataDrivenPages方法_elementpositionx