题目描述

给定一个段落 (paragraph) 和一个禁用单词列表 (banned)。返回出现次数最多,同时不在禁用列表中的单词。

题目保证至少有一个词不在禁用列表中,而且答案唯一。

禁用列表中的单词用小写字母表示,不含标点符号。段落中的单词不区分大小写。答案都是小写字母。

示例:
输入:
paragraph = “Bob hit a ball, the hit BALL flew far after it was hit.”
banned = [“hit”]
输出: “ball”
解释:
“hit” 出现了3次,但它是一个禁用的单词。
“ball” 出现了2次 (同时没有其他单词出现2次),所以它是段落里出现次数最多的,且不在禁用列表中的单词。
注意,所有这些单词在段落里不区分大小写,标点符号需要忽略(即使是紧挨着单词也忽略, 比如 “ball,”),
"hit"不是最终的答案,虽然它出现次数更多,但它在禁用单词列表中。

提示:
1 <= 段落长度 <= 1000
0 <= 禁用单词个数 <= 100
1 <= 禁用单词长度 <= 10
答案是唯一的, 且都是小写字母 (即使在 paragraph 里是大写的,即使是一些特定的名词,答案都是小写的。)
paragraph 只包含字母、空格和下列标点符号!?’,;.
不存在没有连字符或者带有连字符的单词。
单词里只包含字母,不会出现省略号或者其他标点符号。

代码:

package dayLeetCode;import java.util.*;public class dayleetcode819 {public String mostCommonWord(String paragraph, String[] banned) {Map<String, Integer> map  = new HashMap<>();List<String> list = new ArrayList<>();// 将字符串全部转为小写,并以空格代替所有的标点,以空格为分割字符将单词匹配出来,注意这里匹配出来的字符串数组中可能存在空字符paragraph = paragraph.toLowerCase();paragraph = paragraph.replace(".", " ").replace(","," ").replace("!", " ").replace("?",  " ").replace("~"," ").replace(";", " ").replace("'"," ").trim();String[] s = paragraph.split( " ");//        for (String str : s){//            System.out.println(str);
//        }// 禁用单词for (String str : banned){list.add(str);}// 将非禁用的单词存入map2中for (String str : s){// 排除禁用的单词和空字符if (list.contains(str) == false && str.equals("") == false){map.put(str, map.getOrDefault(str, 0) + 1);}}int max = 0;String ansStr = null;for (String str: map.keySet()){if (map.get(str) >= max){max = map.get(str);ansStr = str;}}return ansStr;}public static void main(String[] args) {dayleetcode819 obj = new dayleetcode819();String[] ban = {"m","q","e","l","c","i","z","j","g","t","w","v","h","p","d","b","a","r","x","n"};System.out.println(obj.mostCommonWord("j. t? T. z! R, v, F' x! L; l! W. M; S. y? r! n; O. q; I? h; w. t; y; X? y, p. k! k, h, J, r? w! U! V; j' u; R! z. s. T' k. P? M' I' j! y. P, T! e; X. w? M! Y, X; G; d, X? S' F, K? V, r' v, v, D, w, K! S? Q! N. n. V. v. t? t' x! u. j; m; n! F, V' Y! h; c! V, v, X' X' t? n; N' r; x. W' P? W; p' q, S' X, J; R. x; z; z! G, U; m. P; o. P! Y; I, I' l' J? h; Q; s? U, q, x. J, T! o. z, N, L; u, w! u, S. Y! V; S? y' E! O; p' X, w. p' M, h! R; t? K? Y' z? T? w; u. q' R, q, T. R? I. R! t, X, s? u; z. u, Y, n' U; m; p? g' P? y' v, o? K? R. Q? I! c, X, x. r' u! m' y. t. W; x! K? B. v; m, k; k' x; Z! U! p. U? Q, t, u' E' n? S' w. y; W, x? r. p! Y? q, Y. t, Z' V, S. q; W. Z, z? x! k, I. n; x? z; V? s! g, U; E' m! Z? y' x? V! t, F. Z? Y' S! z, Y' T? x? v? o! l; d; G' L. L, Z? q. w' r? U! E, H. C, Q! O? w! s? w' D. R, Y? u. w, N. Z? h. M? o, B, g, Z! t! l, W? z, o? z, q! O? u, N; o' o? V; S! z; q! q. o, t! q! w! Z? Z? w, F? O' N' U' p? r' J' L; S. M; g' V. i, P, v, v, f; W? L, y! i' z; L? w. v, s! P?" , ban));}
}

[Leetcode每日一题] 819. 最常见的单词相关推荐

  1. Leetcode每日一题:290.word-pattern(单词规律)

    思路:hash索引肯定要用的,但这道题我既要让单词对应字符,也要判断这个单词所对应的字符是否已被别的单词对应,所以我用了两个map,方便判断:一个是map<string,char>,一个是 ...

  2. Leetcode每日一题:127.word-ladder(单词接龙)

    思路:树的层次遍历,BFS,注意这里如果用bool数组标记该字符串是否加入过序列,肯定会超时,因为每次都要遍历整个wordList,所以,建议将加入序列的字符串从wordList中删除,勉强过关:DF ...

  3. Leetcode每日一题:140.word-break-ii(单词拆分)

    很疑惑,明明代码测试样例输出没问题,提交后的样例点在本地上测试也没问题,但就是通过不了: 在本地vscode上明明能得到正确结果: 思路就是DFS+回溯+哈希: #include <iostre ...

  4. leetcode每日刷题计划-简单篇day8

    leetcode每日刷题计划-简单篇day8 今天是纠结要不要新买手机的一天QAQ想了想还是算了吧,等自己赚钱买,加油 Num 70 爬楼梯 Climbing Stairs class Solutio ...

  5. Leetcode每日一题:171.excel-sheet-column-number(Excel表列序号)

    思路:就是168题的反命题,进制的方式完美解决: Leetcode每日一题:168.excel-sheet-column-title(Excel表名称) class Solution {public: ...

  6. 【LeetCode每日一题】1723. 完成所有工作的最短时间

    [LeetCode每日一题]1723. 完成所有工作的最短时间 [1] 1723. 完成所有工作的最短时间 [2] 473. 火柴拼正方形 [1] 1723. 完成所有工作的最短时间 题目: 给你一个 ...

  7. leetcode每日一题--雀巢原理;抽屉算法;Quorum机制;分布式应用

    leetcode每日一题 539. 最小时间差 示例 1: 输入:timePoints = ["23:59","00:00"] 输出:1 示例 2: 输入:ti ...

  8. LeetCode每日一题——1812. 判断国际象棋棋盘中一个格子的颜色

    LeetCode每日一题系列 题目:1812. 判断国际象棋棋盘中一个格子的颜色 难度:简单 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 给你一个坐标 coordinates ...

  9. 【LeetCode每日一题】——109.有序链表转换二叉搜索树

    文章目录 一[题目类别] 二[题目难度] 三[题目编号] 四[题目描述] 五[题目示例] 六[题目提示] 七[解题思路] 八[时间频度] 九[代码实现] 十[提交结果] 一[题目类别] 二叉树 二[题 ...

最新文章

  1. 转载:百度地图api 常用 例子
  2. AlvinZH双掉坑里了
  3. oracle sga pga mysql_修改Oracle数据库SGA和PGA大小
  4. django——url(路由)配置
  5. java类验证和装载顺序_java中类的加载顺序介绍(ClassLoader)
  6. 两条边延长角会有什么变化_叶片锁是什么样的 叶片锁使用方法【详解】
  7. matlab实现双边滤波_【他山之石】pytorch 实现双边滤波
  8. VM虚拟机中Linux扩展磁盘空间的方法
  9. 添加notepad到右键菜单栏
  10. 移除类名没有触发transition_epoll边缘触发模式
  11. 关闭Oracle 11g的DPR特性
  12. android 离线地图 开源,android osmdroid 加载常用离线地图格式(开源的在线地图)...
  13. 国产Linux系统下替代QQ和微信的不二之选
  14. 烧了2个HUB和1个光驱后 我选择了ORICO分控集线器
  15. 关于ORACLE PLSQL读文件
  16. php notice undefined offset,PHP 使用数组 疯狂提示 Notice: Undefined offset
  17. Android Zxing集成
  18. python编程图文_深入Python多进程编程基础——图文版
  19. Linux 系统中 resolv.conf 文件详解
  20. Unity使用Isometric Z As Y Tilemap创建2.5D地图(三)如何用代码创建Tilemap

热门文章

  1. Linux系统MySQL忘记密码?5分钟教你重设密码
  2. linux 删除ln目录链接,CentOS下软链接建立与删除 ln
  3. 大数据时代的信息获取
  4. STI比赛任务一:【智能问答baseline】
  5. 吴恩达机器学习课程(第一周)
  6. 数据库笔记——DB、DBMS、DBA、DBS
  7. php 5.4 fastcgi,Windows Server 2012一键安装PHP环境(PHP5.4+FastCGI模式)_护卫神
  8. (转)人体自身的神奇补肾法
  9. 【Three.js:3D模型】各种模型简单介绍
  10. C语言商品打折算法编程,折扣日 | 算法竞赛入门必备的 《 C++ 程序设计》