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

LeetCode819. 最常见的单词(python)

题目

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

思路

先处理符号,再计算单词出现次数,最后取出不在禁用单词里且出现次数最大的单词

class Solution:def mostCommonWord(self, paragraph: str, banned: List[str]) -> str:     # 处理特殊符号for i in "!?',;.":if i in paragraph:# 把所有的符号换成空格paragraph = paragraph.replace(i, ' ').replace('  ', ' ')        # 将paragraph转为小写字母,去掉首位的空格,再转换成单词列表res = list(paragraph.lower().strip().split(' '))dicts = {}# 遍历所有单词遍,转换成单词为key,出现次数为value的字典for re in res:if re in dicts.keys():dicts[re] += 1else:dicts[re] = 1# 去除字典中的的禁用单词for key in list(dicts.keys()):if key in banned:del dicts[key]# 返回字典中value最大值的keyreturn list(dicts.keys())[list(dicts.values()).index(max(dicts.values()))]

题解

优化一下,计算每个单词出现次数的同时,不计入禁用单词出现的次数
最后直接去出现次数最大的单词就行

class Solution:def mostCommonWord(self, paragraph: str, banned: List[str]) -> str:for i in "!?',;.":if i in paragraph:paragraph = paragraph.replace(i, ' ').replace('  ', ' ')res = list(paragraph.lower().strip().split(' '))dicts = {}# 将转换单词出现次数字典和去除字典中的的禁用单词同步进行for re in res:if re not in banned:if re in dicts.keys():dicts[re] += 1else:dicts[re] = 1# 用value列表求出最大值的索引,用该索引取去key列表的值return list(dicts.keys())[list(dicts.values()).index(max(dicts.values()))]

过啦~

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

相关文章:

  • 【深入理解C指针】经典笔试题——指针和数组
  • 雷达散射截面
  • 希腊棺材之谜——复盘
  • CentOS的下载和安装
  • new bing的chatGPT如何解析英文论文pdf
  • 学会这12个Python装饰器,让你的代码更上一层楼
  • 企业使用ERP的好处
  • 【QT】如何获取屏幕(桌面)的大小或分辨率
  • ETL工具的选择
  • SpringBoot仿天猫商城java web购物网站的设计与实现
  • C#基础教程22 文件的输入与输出
  • Ubuntu18.04 python 开发usb通信
  • RabbitMq 消息确认机制详解 SpringCloud
  • 后台导航布局
  • 设计模式——抽象工厂模式(创建型)
  • Java面试题--SpringMVC的执行流程
  • c# 32位程序突破2G内存限制
  • 【C语言】指针详解总结
  • Java加解密(八)工具篇
  • Go框架三件套(Web/RPC/ORM)
  • HR问:假如公司给不到你期望的薪资怎么办?这个问题该如何体面地回答?
  • LearnOpenGL-高级OpenGL-2.模板测试
  • 【Git从入门到精通】Git入门
  • 软件测试18
  • C语言实现快速排序(hoare法、挖坑法、前后指针法与非递归实现)——不看后悔系列
  • 如何为系统可靠性的量化提供依据
  • 量化投资中的因子是什么?因子是如何分类的,包括哪些?
  • 力扣-修复表中的名字
  • 【博客633】linux vxlan设备工作原理
  • 3.12学习周报