LeetCode每日一题——819. 最常见的单词

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

题目

给定一个段落 (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"不是最终的答案,虽然它出现次数更多,但它在禁用单词列表中。

思路

字符串预处理+哈希表计数+排序

代码

from collections import Counter
def mostCommonWord(paragraph, banned):
    paragraph = paragraph.lower().replace('!', ' ').replace('?', ' ').replace(',',' ').replace(';',' ').replace('.',' ').replace("'", ' ').split(' ')
    h = Counter(paragraph)
    h = sorted(h.items(), key=lambda x: x[1], reverse=True)
    for i in range(len(h)):
        if h[i][0] not in banned and h[i][0] != '':
            return h[i][0]
目录
相关文章
|
7月前
代码随想录 Day7 字符串1 LeetCode T344反转字符串 T541 反转字符串II 151翻转字符串的单词
代码随想录 Day7 字符串1 LeetCode T344反转字符串 T541 反转字符串II 151翻转字符串的单词
29 0
|
4月前
|
自然语言处理 Go
golang力扣leetcode 720.词典中最长的单词
golang力扣leetcode 720.词典中最长的单词
17 0
|
4月前
|
Go
golang力扣leetcode 139.单词拆分
golang力扣leetcode 139.单词拆分
19 0
|
5月前
|
Java
557. 反转字符串中的单词 III --力扣 --JAVA
给定一个字符串 s ,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
30 0
|
5月前
|
存储 自然语言处理 算法
☆打卡算法☆LeetCode 211. 添加与搜索单词 - 数据结构设计 算法解析
☆打卡算法☆LeetCode 211. 添加与搜索单词 - 数据结构设计 算法解析
|
5月前
|
测试技术
每日一题 --- 力扣318----最大单词长度乘积
每日一题 --- 力扣318----最大单词长度乘积
剑指Offer LeetCode 面试题58 - I. 翻转单词顺序
剑指Offer LeetCode 面试题58 - I. 翻转单词顺序
23 0
|
6月前
|
算法
代码随想录算法训练营第八天 | LeetCode 344.反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串
代码随想录算法训练营第八天 | LeetCode 344.反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串
46 0
|
11月前
反转字符串中的单词(力扣刷题)
反转字符串中的单词(力扣刷题)
图解LeetCode——剑指 Offer 58 - I. 翻转单词顺序
图解LeetCode——剑指 Offer 58 - I. 翻转单词顺序
73 1
 图解LeetCode——剑指 Offer 58 - I. 翻转单词顺序