当前位置: 首页 > news >正文

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

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

开篇

  今天是备战蓝桥杯的第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; //返回数组}
}

结语

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

http://www.lryc.cn/news/239005.html

相关文章:

  • Xilinx Zynq-7000系列FPGA任意尺寸图像缩放,提供两套工程源码和技术支持
  • 基于 Glibc 版本升级的 DolphinDB 数据查询性能优化实践
  • 【顺序表的应用-通讯录的实现】
  • [Spring Cloud] Nacos 实战 + Aws云服务器
  • SpringCloud微服务注册中心:Nacos介绍,微服务注册,Ribbon通信,Ribbon负载均衡,Nacos配置管理详细介绍
  • 身份证号码校验
  • ArcGIS如何处理并加载Excel中坐标数据?
  • C++标准模板(STL)- 类型支持 (类型修改,从给定类型移除 const 或/与 volatile 限定符,std::remove_cv)
  • nodejs搭建本地服务
  • 如何看待Unity新收费模式?
  • Excel数据可视化—波士顿矩阵图【四象限图】
  • 【Java】智慧工地管理系统源代码,支持二次开发,SaaS模式
  • Lstm+transformer的刀具磨损预测
  • 本机idea连接虚拟机中的Hbase
  • .NET中的Object类学习3_MemberwiseClone方法
  • 鼎捷前端开发校招岗技术面面经(已过)
  • Rockchip平台rk3588源码下载编译(基于Android13)
  • RuntimeError: PyPI no longer supports ‘pip search‘ (or XML-RPC search).
  • 21款奔驰GLS450升级23P驾驶辅助 提升安全出行
  • iOS越狱检测总结
  • 场景驱动的 AI 体验设计:如何让智能 IDE 赋能遗留系统重写
  • 【封装UI组件库系列】搭建项目及准备工作
  • C#使用DateTime获取日期和时间
  • rook-ceph部署
  • JVM基础- 垃圾回收器
  • 数理统计的基本概念(二)
  • CountDownLatch和CyclicBarrier
  • 云原生正在重塑软件的整个生命周期(内附资料)
  • Node.js环境配置级安装vue-cli脚手架
  • 十七、Rust集成MQTT Client