【算法萌新闯力扣】:两句话中的不常见单词

    力扣热题:两句话中的不常见单词

开篇

  今天是备战蓝桥杯的第19天,今天到目前刷了4道力扣算法题。其中,这道题是对我来说收获最大的一道,让我更熟练地掌握了一些算法题中方法,于是来与大家分享一下。

题目链接: 884.两句话中的不常见单词

题目描述

在这里插入图片描述

代码思路

  题目其实可以把不常见单词理解成在两个句子中总共只出现一次的单词。那显而易见,我们只要用哈希表统计出每个单词出现的次数,题目就迎刃而解。
这道题的代码中运用了许多方法,列出来给大家看看。
1.String类中的split()
2.map.getOrDefault( , )
3.遍历哈希表

for(Map.Entry<String, Integer> entry : map.entrySet()){
            //if(entry.getValue() == 1) list.add(entry.getKey());
}

代码纯享版

class Solution {
    public String[] uncommonFromSentences(String s1, String s2) {
        String[] arr1 = s1.split(" ");
        String[] arr2 = s2.split(" ");
        Map<String, Integer> map = new HashMap<>();
        for(String str : arr1){
            // if(map.containsKey(str)) map.put(str, map.get(str) + 1);
            // else map.put(str, 1);
            map.put(str, map.getOrDefault(str, 0) + 1);
        }
        for(String str : arr2){
            // if(map.containsKey(str)) map.put(str, map.get(str) + 1);
            // else map.put(str, 1);
            map.put(str, map.getOrDefault(str, 0) + 1);
        }
        List<String> list = new ArrayList<>();  
        for(Map.Entry<String, Integer> entry : map.entrySet()){
            if(entry.getValue() == 1) list.add(entry.getKey());
        }
        String[] arr3 = new String[list.size()];
        int i = 0;
        for(String str : list){
            arr3[i++] = str;
        }
        return arr3;

    }
}

代码逐行解析版

class Solution {
    public String[] uncommonFromSentences(String s1, String s2) {
        String[] arr1 = s1.split(" "); //利用split方法,利用空格把句子变成单词数组
        String[] arr2 = s2.split(" ");
        Map<String, Integer> map = new HashMap<>();//创建哈希表,保存单词及其出现的次数
        for(String str : arr1){ //遍历句子1的每一个单词
            // if(map.containsKey(str)) map.put(str, map.get(str) + 1);
            // else map.put(str, 1);
            map.put(str, map.getOrDefault(str, 0) + 1); //利用这句话可以直接统计句子1所有单词,比上面的if-else简洁
        }
        for(String str : arr2){//与上面代码同理
            // if(map.containsKey(str)) map.put(str, map.get(str) + 1);
            // else map.put(str, 1);
            map.put(str, map.getOrDefault(str, 0) + 1);
        }
        List<String> list = new ArrayList<>(); //创建动态数组
        for(Map.Entry<String, Integer> entry : map.entrySet()){ //遍历哈希表,把值为1的键存到动态数组中
            if(entry.getValue() == 1) list.add(entry.getKey());
        }
        String[] arr3 = new String[list.size()]; //创建数组
        int i = 0;
        for(String str : list){ //把动态数组里的元素转移到数组中
            arr3[i++] = str;
        }
        return arr3; //返回数组
    }
}

结语

  如果对这道题的分享对您有帮助,点个关注,我会每天分享力扣题的讲解,与大伙儿一起向前迈进!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/176374.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

web自动化测试-Selenium语法入门到精通

前言 说到自动化测试&#xff0c;就不得不提大名鼎鼎的Selenium。Selenium 是如今最常用的自动化测试工具之一&#xff0c;支持快速开发自动化测试框架&#xff0c;且支持在多种浏览器上执行测试。 Selenium学习难度小&#xff0c;开发周期短。对测试人员来说&#xff0c;如果…

vue中列表渲染

列表渲染 实际开发中&#xff0c;使用每条数据的唯一标识作为key,也就是对于数组列表&#xff0c;对象中的属性如&#xff1a;id、手机号、身份证号、学号等唯一值&#xff0c;对象列表同理 只要不对列表的逆序添加&#xff0c;逆序删除等破坏顺序的操作&#xff0c;仅用于渲染…

微信小程序:This Mini Program cannot be opened as your Weixin version is out-of-date.

项目场景&#xff1a; 问题描述 升级基础库3.2.0&#xff0c;然后PC端整个小程序都打不开了&#xff0c;点击小程序提示”This Mini Program cannot be opened as your Weixin version is out-of-date. Update Weixin to the latest version.“&#xff0c;并且点击Update Wei…

新手怎样快速上手接口测试?掌握这几个知识点直接起飞!

接口测试是测试系统组件间接口的一种方式&#xff0c;接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是检查数据的增删改查操作&#xff0c;以及系统之间的逻辑关系等。 接口的几种类型 接口的类型包括&#xff1a;post &#xff0c;get&…

最新AIGC创作系统ChatGPT网站源码,Midjourney绘画系统,支持最新GPT-4-Turbo模型,支持DALL-E3文生图

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

自动化发展趋势以及自动化测试常见问题解析

前言 ⾃动化接⼝测试会越来越受到重视 在移动互联⽹时代&#xff0c;对于质量的要求⽐PC时代⾼的多&#xff0c;⽽投⼊产出⽐最⾼的⾃动化接⼝测试&#xff0c;将会是⼤部分公司的⾸选⽅向&#xff0c;但需要严格掌握⼀门语⾔ 持续集成是⽬前⾮常流⾏的开发⽅式&#xff0c;…

《向量数据库指南》——向量数据库Milvus Cloud搭建Excel公式编辑器助手

引言 在日常工作中,Excel是我们经常使用的办公工具,而熟练应用Excel公式对于提高工作效率非常重要。然而,有时候我们会遇到一些复杂的需求,需要用到较为专业的Excel公式,而这正是Excel公式编辑器助手的用武之地。本文将介绍如何利用向量数据库Milvus Cloud搭建GPT大模型和…

铸就匠心,打造西部最具权威的行业商会组织

中国商报陕西报道&#xff08;记者 朱清平&#xff09;西安市五金机电商会(以下简称商会)第二届一次会员代表大会暨新任理事、监事就职典礼于11月17日在西安经开洲际酒店召开。 商会于2018年10月成立,在5年的发展中,依托“一带一路”发展的“快车道”,通过新丝路国际工业品数字…

Threejs_12 物体阴影的实现

所以在Threejs的画布世界之中&#xff0c;一个物体有自己的影子呢&#xff1f; 阴影效果的实现 你需要先知道在threejs世界中&#xff0c;有哪些灯光或者材质是可以产生阴影效果的 环境光没有阴影 平行光有阴影(太阳) 点光源有阴影(灯泡) 聚光灯有阴影(手电筒) 平面光源没有…

自主创新操作系统KeyarchOS的崛起

自主创新操作系统KeyarchOS的崛起 写在前面 在计算机中&#xff0c;操作系统是其最基本也是最为重要的基础性系统软件。从计算机用户的角度来说&#xff0c;计算机操作系统体现为其提供的各项服务&#xff1b;从程序员的角度来说&#xff0c;其主要是指用户登录的界面或者接口…

qlik为app添加定时调度

1&#xff0c;进入qmc/Apps 2&#xff0c;搜索需要添加调度的APP 3&#xff0c;搜索到后双击点开Tasks 4&#xff0c;新增Tasks---点击Create New 5&#xff0c;添加调度器 6&#xff0c;设置调度&#xff0c;双击新增的调度&#xff0c;注意选择时区

从mysql源码编译出相应的库和可执行文件及搭建mysql服务端

目录 1. 问题的提出 2. 源码下载 3. 升级或安装某些前置软件 3.1. 升级CMake 3.2. 升级gcc、g 4. 安装依赖库 4.1. 安装OpenSSL 4.2. 安装Curses 4.3. 安装pkg-config 5. 编译、安装 6. 编译结果、配置 7. 编译错误处理 7.1. 错误1 7.2. 错误2 8. 搭建mysql数…

解决vue中引入天地图显示不全问题,设置setTimeout即可解决!

index.html中引入天地图api <script type"text/javascript" src"https://api.tianditu.gov.cn/api?v4.0&tk你的key"></script>map.vue中初始化天地图 //初始化天地图 initTMap() {const T window.T;// 3.初始化地图对象this.tMap new…

【Linux】历史发展及安装

目录 1. 前言2. Linux历史背景2.1 发展史2.1.1 UNIX发展的历史2.1.2 Linux发展历史 3. 开源4.Linux系统安装4.1 Linux系统选择4.2 登陆 1. 前言 从今天开始学习一门新课程Linux&#xff0c;会以博客的形式分享自己的学习笔记。如有问题请指出&#xff0c;大家共同进步。 2. L…

wvp-gb28181-pro打包

生成可执行jar cd wvp-GB28181-pro mvn package复制错误已复制 生成war cd wvp-GB28181-pro mvn package -P war 生成的包的路径 wvp-GB28181-pro\target

双12电视盒子推荐:测评员解析目前电视盒子哪个最好

电视盒子不需要每月缴费&#xff0c;只需联网就可以收看海量视频资源&#xff0c;游戏、网课、投屏等功能让电视盒子的使用场景更丰富&#xff0c;我每年都会进行数十次电视盒子测评&#xff0c;本期要分享的是双十二电视盒子推荐&#xff0c;全面解析目前电视盒子哪个最好。 一…

边缘计算多角色智能计量插座 x 资产显示标签:实现资产追踪与能耗管理的无缝结合

越来越多智慧园区、智慧工厂、智慧医院、智慧商业、智慧仓储物流等企业商家对精细化、多元化智能生态应用场景的提升&#xff0c;顺应国家节能减排、环保的时代潮流&#xff0c;设计一款基于融合以太网/WiFi/蓝牙智能控制的智能多角色插座应运而生&#xff0c;赋予智能插座以遥…

Selenium4+python被单独定义<div>的动态输入框和二级下拉框要怎么定位?

今天在做练习题的时候,发现几个问题捣鼓了好久,写下这篇来记录 问题一: 有层级的复选框无法定位到二级目录 对于这种拥有二级框的选项无法定位,也不是<select>属性. 我们查看下HTML,发现它是被单独封装在body内拥有动态属性的独立<div>,当窗口点击的时候才会触发…

为什么要学习 Linux?

为什么要学习 Linux&#xff1f; 用 Linus 本人的话来说&#xff0c;用户不需要接触到操作系统。操作系统的功能是给应用程序提供API&#xff0c;因而&#xff0c;只有开发人员才需要学习操作系统。 最近很多小伙伴找我&#xff0c;说想要一些Linux的资料&#xff0c;然后我根…

云原生正在重塑软件的整个生命周期(内附资料)

随着企业数字化转型进程的发展&#xff0c;企业面临着新旧商业形态的剧变&#xff0c;颠覆和重构时刻都在发生。 企业需要更加快速地感知用户侧的需求变化并做出调整&#xff0c;才有可能在竞争中持续积累优势。业务的个性化、敏捷化、智能化需求日益突显&#xff0c;数字化应…