【算法萌新闯力扣】:最常见的单词

news/2024/10/23 9:31:13/

    力扣热题:最常见的单词

开篇

 今天是备战蓝桥杯的第17天,今天到现在刷了5道算法题,分享一道很不错的题目。

题目链接:819.最常见的单词

题目描述

在这里插入图片描述

代码思路

 根据题目要求,我的思路是:建立一个哈希表,把每个单词及其出现的次数记录下来,最后遍历哈希表,返回出现次数最多的单词。思路并不难,难的是代码的实现。

代码纯享版

class Solution {public String mostCommonWord(String paragraph, String[] banned) {paragraph = paragraph.toLowerCase();Map<String, Integer> map = new HashMap<>();StringBuffer str = new StringBuffer("");int left = 0;while(left < paragraph.length()){char s = paragraph.charAt(left);if(s >= 'a' && s <= 'z'){str.append("" + s);}else if(str.length() > 0){if(map.containsKey(str.toString())){map.put(str.toString(),map.get(str.toString()) + 1);}else map.put(str.toString(), 1);str.delete(0, str.length());}left++;if(left == paragraph.length() && s >= 'a' && s <= 'z'){if(str.length() > 0){if(map.containsKey(str.toString())){map.put(str.toString(),map.get(str.toString()) + 1);}else map.put(str.toString(), 1);str.delete(0, str.length());}}}for(int i = 0; i < banned.length; i++){if(map.containsKey(banned[i])){map.remove(banned[i]);}}int max = 0;String maxstr = "";for(Map.Entry<String, Integer> entry : map.entrySet()){if(entry.getValue() > max){max = entry.getValue();maxstr = entry.getKey();}}return maxstr;}
}

代码逐行解析版

class Solution {public String mostCommonWord(String paragraph, String[] banned) {paragraph = paragraph.toLowerCase(); //把段落中的字符全部变成小写Map<String, Integer> map = new HashMap<>(); //创建哈希表,保存单词及其次数StringBuffer str = new StringBuffer(""); //创建字符串,来暂时保存单词int left = 0; //扫描段落的指针while(left < paragraph.length()){ //循环条件,指针小于段落长度char s = paragraph.charAt(left); //提取字符判断if(s >= 'a' && s <= 'z'){ //符合要求,放入字符串中str.append("" + s);}else if(str.length() > 0){ //不符合要求,证明是空格,那之前保存的部分就是一个完整的单词if(map.containsKey(str.toString())){ //if-else都是把单词存入哈希表map.put(str.toString(),map.get(str.toString()) + 1);}else map.put(str.toString(), 1);str.delete(0, str.length()); //删掉字符串中的单词,方便下一个单词的保存}left++;//指针右移if(left == paragraph.length() && s >= 'a' && s <= 'z'){ //单独判断最后一个字符的情况,如果最后一个字符是字母,证明存在单词,复制粘贴上面哈希表保存单词的方法即可if(str.length() > 0){if(map.containsKey(str.toString())){map.put(str.toString(),map.get(str.toString()) + 1);}else map.put(str.toString(), 1);str.delete(0, str.length());}}}for(int i = 0; i < banned.length; i++){ //若哈希表中有禁用的单词,则删掉if(map.containsKey(banned[i])){map.remove(banned[i]);}}int max = 0; //max统计最多次出现的次数String maxstr = ""; //maxstr记录最多次出现的单词for(Map.Entry<String, Integer> entry : map.entrySet()){ //利用遍历哈希表的方法遍历if(entry.getValue() > max){ //哈希表的值如果大于maxmax = entry.getValue(); //更新max和maxstrmaxstr = entry.getKey();}}return maxstr;//返回最常见的单词}
}

结语

 如果这道题的分享对您有所帮助,点个关注,我会每天更新力扣题目的分享,与大家一起向前迈进。


http://www.ppmy.cn/news/1229546.html

相关文章

十七、Linux的组管理

1、Linux组基本介绍 在linux中的每个用户必须属于一个组&#xff0c;不能独立于组外。在linux中每个文件所有者、所在组、其它组的概念 1.所有者 2.所在组 3.其他组 4.改变用户所在的组 2、文件/目录 所有者 一般为文件的创建者&#xff0c;谁创建了该文件&#xff0c;就自…

docker 安装mongodb 实现 数据,日志,配置文件外挂

docker 安装mongodb 实现数据&#xff0c;日志&#xff0c;配置文件外挂 1 背景 最近开发了一个评论系统之前用mysql来存储数据&#xff0c;但是考虑到后期业务增大访问量也会增大&#xff0c;为了兼容这种高并发的场景&#xff0c;因此经过多方面的考虑&#xff0c;我们最终…

【错误记录】Uncaught TypeError: m.nodeName.toLowerCase is not a function

描述&#xff1a;在控制台输出上述错误~ 原因&#xff1a;在页面中&#xff0c;使用jQuery 开发时&#xff0c;命名不能和jQuery一起方法属性冲突&#xff0c;比如这里的nodeName&#xff0c;这里换一个不冲突的名字&#xff0c;就解决问题了。

高性能及高可靠1553B总线解决方案

1553B总线作为目前航天、航空电子系统中的核心控制通信总线&#xff0c;广泛应用于火箭、卫星、飞船等多个空间领域&#xff0c;飞行器中各个子系统节点之间核心数据交互与智能控制通过1553B总线传输实现&#xff0c;可确保航天器控制系统的高可靠运转。 十余年来&#xff0c;…

常用 API 异常

常用 API & 异常 对之前那篇 API 文章的补充学习 1.API 1.1 API概述【理解】 什么是API ​ API (Application Programming Interface) &#xff1a;应用程序编程接口 java中的API ​ 指的就是 JDK 中提供的各种功能的 Java类&#xff0c;这些类将底层的实现封装了起来&am…

二手车选购参考:Honda CB650R/CBR650R 2019~2023 国产价格享进口本田

本田好&#xff0c;本田妙&#xff0c;本田大法呱呱叫。本田的650系列在国内可以说是伤透了一批老车主的心&#xff0c;上路12万&#xff0c;3年现在还值个4万&#xff0c;搁谁也受不了&#xff0c;正好没什么太好的新闻写&#xff0c;今天就带大家来看看二手车选购参考&#x…

CSS的选择器(一篇文章齐全)

目录 Day26&#xff1a;CSS的选择器 1、CSS的引入方式 2、CSS的选择器 2.1 基本选择器​编辑 2.2 组合选择器 2.3 属性选择器 2.4 伪类选择器 2.5 样式继承 2.6 选择器优先级 3、CSS的属性操作 3.1 文本属性 3.2 背景属性 3.3 边框属性 3.4 列表属性 3.5 dispal…

英飞凌TC3xx的LMU SRAM保护机制(二)

目录 1.SRAM保护配置使能 2.测试结果分析 3.小结 我们接着上文继续来梳理如何配置LMU的保护机制 英飞凌TC3xx的LMU SRAM保护机制(一)-CSDN博客 1.SRAM保护配置使能 简单举两个例子&#xff0c;地址下限寄存器如下&#xff1a; 可以看到使用SRI地址的bit31-5用于作为边界&am…