【每日一算法】最常见的单词
微信改版,加星标不迷路!
每日一算法-最常见的单词
给定一个段落 (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
.1 <= 禁用单词个数 <= 100
.1 <= 禁用单词长度 <= 10
.答案是唯一的, 且都是小写字母 (即使在
paragraph
里是大写的,即使是一些特定的名词,答案都是小写的。)paragraph
只包含字母、空格和下列标点符号!?',;.
不存在没有连字符或者带有连字符的单词。
单词里只包含字母,不会出现省略号或者其他标点符号。
解析
? 将paragraph进行以下处理:将所有的标点符号换为空格
? 统计除了banned之外出现的单词个数,最后取个数最多的单词
实现代码
class Solution {public: string mostCommonWord(string p, vector<string>& banned) { unordered_set<string> ban(banned.begin(), banned.end()); unordered_map<string, int> count; for (auto & c: p){ //printf("%c\n",c); c = isalpha(c) ? tolower(c) : ' '; } //printf("%s",p.c_str()); istringstream iss(p); string w; pair<string, int> res ("", 0); while (iss >> w) if (ban.find(w) == ban.end() && ++count[w] > res.second) res = make_pair(w, count[w]); return res.first; }};
需要注意的地方
for (auto & c: p){
c = isalpha(c) ? tolower(c) : ' ';
}
这段代码的作用是将标点符号全部置为空格。isalpha的作用是判断是否为字母,tolower的作用是将字母全部转为小写。
istringstream iss(p);
string w;
pair<string, int> res ("", 0);
while (iss >> w)
if (ban.find(w) == ban.end() && ++count[w] > res.second)
res = make_pair(w, count[w]);
return res.first;
"isstringstream"变量和 ">>" 一起使用,目的是挨个取出paragraph中的单词,然后通过ban,find()判断是否在禁忌表中,如果满足不再禁忌表中,则将该单词的计数器+1。遍历完paragraph之后,返回结果即可。
今日问题
朋友们圣诞节快乐哈,今天给大家发一下福利。
今天大家谈一下你最想要哪一本书?理由是什么?
打卡格式:打卡第n天,答:...
为什么打卡?戳下面你就知道了!
猛
戳
这
儿
21/天/养/一/个/好/习/惯
【每日一算法】最常见的单词相关推荐
- 【每日一算法】最后一个单词的长度
微信改版,加星标不迷路! 每日一算法-最后一个单词的长度 作者:阿广 阅读目录 1 题目 2 解析 1 题目 给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度. 如果不存在最 ...
- 【每日一算法】单词接龙
微信改版,加星标不迷路! 每日一算法-单词接龙 给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度.转换需遵循如下规 ...
- 【每日一算法】唯一摩尔斯密码词
微信改版,加星标不迷路! 每日一算法-唯一摩尔斯密码词 作者:阿广 阅读目录 1 题目 2 解析 1 题目 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如 ...
- 【每日一算法】两个列表的最小索引总和
微信改版,加星标不迷路! 每日一算法-两个列表的最小索引总和 假设Andy和Doris想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示. 你需要帮助他们用最少的 ...
- 【Leetcode819】最常见的单词
Leetcode819 最常见的单词 1.题目 给定一个段落 (paragraph) 和一个禁用单词列表 (banned).返回出现次数最多,同时不在禁用列表中的单词. 题目保证至少有一个词不在禁用列 ...
- 程序员常见700单词
程序员常见700单词 快捷键 Ctrl+F 进行搜索查找 1. password /ˈpæswɜ:rd/ n. 密码 2. grep /'grep/ n. 检索目标行命令 3. tre ...
- ML算法(常见机器学习算法公式)
原文链接:www.cnblogs.com/tornadomeet/p/3395593.html 前言: 找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的 ...
- 【每日一算法】对称二叉树
每日一算法-对称二叉树 题目 给定一个二叉树,检查它是否是镜像对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1 / \ 2 2 / \ / \ 3 4 4 3 但是 ...
- 【每日一算法】使用二分法解决x 的平方根问题
每日一算法-x 的平方根 题目 实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: ...
最新文章
- AI战“疫”!人工智能在疫情中的重要作用
- SystemCenter2012SP1实践(6)SCVMM管理XenServer
- leetcode 235. 二叉搜索树的最近公共祖先 思考分析
- Bad Request (Invalid Hostname)解决方法
- 计算机课具体任务驱动,计算机基础课程的任务驱动的教学设计与实践论文
- Date和Calendar
- 图形化界面工具 SQLyog
- 韩顺平php视频笔记35 php运行过程
- asp 环境配置到mysql数据库增删改查
- mac 开启android 模拟器,折腾mac的经验积累 2:mac上如何玩安卓模拟器
- unity4.x从入门到精通、Unity 5.x游戏开发指南读书摘要(2015-4-21 12:10、2015-12-28 22:12)
- python 循环语句s =2+22+222+2222之和_python基础2
- 【每日一具9】Gif动画录制工具
- 1.42 财务测量指标——静态评价法(投资回报率+投资回收期)
- 巴西龟饲养日志----巴西龟成长速度
- []==[]和[]==![]
- WakeupController 走读
- 国内“风口”转变,中国游戏公司纷纷“外逃”,东南亚是个好去处
- 2017年计算机应用基础,计算机应用基础考试试题及答案
- 大力智能作业灯 助力家长解决辅导孩子写作业难题
热门文章
- arm服务器获取文件路径中文,ssh 访问远程服务器文件路径
- php 魔术方法 多继承,day23:单继承多继承菱形继承__init__魔术方法
- matlab中patch命令_matlab 放大平移图形是超出边界问题的处理
- 又居家办公了,要签合同怎么办?
- 第三届北京智源大会开幕,全球最大智能模型“悟道2.0”重磅发布
- Python让你成为AI 绘画大师,简直太惊艳了!(附代码))
- 召唤超参调优开源新神器:集XGBoost、TensorFlow、PyTorch、MXNet等十大模块于一身...
- 《评人工智能如何走向新阶段》后记(再续13)
- 一个 Mybatis 开发神器:Fast MyBatis 超好用
- 推荐100份:高并发高可用和中台一网打尽