微信改版,加星标不迷路!

每日一算法-最常见的单词

给定一个段落 (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. 【每日一算法】最后一个单词的长度

    微信改版,加星标不迷路! 每日一算法-最后一个单词的长度 作者:阿广 阅读目录 1 题目 2 解析 1 题目 给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度. 如果不存在最 ...

  2. 【每日一算法】单词接龙

    微信改版,加星标不迷路! 每日一算法-单词接龙 给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度.转换需遵循如下规 ...

  3. 【每日一算法】唯一摩尔斯密码词

    微信改版,加星标不迷路! 每日一算法-唯一摩尔斯密码词 作者:阿广 阅读目录 1 题目 2 解析 1 题目 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如 ...

  4. 【每日一算法】两个列表的最小索引总和

    微信改版,加星标不迷路! 每日一算法-两个列表的最小索引总和 假设Andy和Doris想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示. 你需要帮助他们用最少的 ...

  5. 【Leetcode819】最常见的单词

    Leetcode819 最常见的单词 1.题目 给定一个段落 (paragraph) 和一个禁用单词列表 (banned).返回出现次数最多,同时不在禁用列表中的单词. 题目保证至少有一个词不在禁用列 ...

  6. 程序员常见700单词

    程序员常见700单词 快捷键  Ctrl+F  进行搜索查找 1. password  /ˈpæswɜ:rd/  n. 密码 2. grep   /'grep/  n.  检索目标行命令 3. tre ...

  7. ML算法(常见机器学习算法公式)

    原文链接:www.cnblogs.com/tornadomeet/p/3395593.html 前言: 找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的 ...

  8. 【每日一算法】对称二叉树

    每日一算法-对称二叉树 题目 给定一个二叉树,检查它是否是镜像对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1   / \  2   2 / \ / \ 3  4 4  3 但是 ...

  9. 【每日一算法】使用二分法解决x 的平方根问题

    每日一算法-x 的平方根 题目 实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: ...

最新文章

  1. AI战“疫”!人工智能在疫情中的重要作用
  2. SystemCenter2012SP1实践(6)SCVMM管理XenServer
  3. leetcode 235. 二叉搜索树的最近公共祖先 思考分析
  4. Bad Request (Invalid Hostname)解决方法
  5. 计算机课具体任务驱动,计算机基础课程的任务驱动的教学设计与实践论文
  6. Date和Calendar
  7. 图形化界面工具 SQLyog
  8. 韩顺平php视频笔记35 php运行过程
  9. asp 环境配置到mysql数据库增删改查
  10. mac 开启android 模拟器,折腾mac的经验积累 2:mac上如何玩安卓模拟器
  11. unity4.x从入门到精通、Unity 5.x游戏开发指南读书摘要(2015-4-21 12:10、2015-12-28 22:12)
  12. python 循环语句s =2+22+222+2222之和_python基础2
  13. 【每日一具9】Gif动画录制工具
  14. 1.42 财务测量指标——静态评价法(投资回报率+投资回收期)
  15. 巴西龟饲养日志----巴西龟成长速度
  16. []==[]和[]==![]
  17. WakeupController 走读
  18. 国内“风口”转变,中国游戏公司纷纷“外逃”,东南亚是个好去处
  19. 2017年计算机应用基础,计算机应用基础考试试题及答案
  20. 大力智能作业灯 助力家长解决辅导孩子写作业难题

热门文章

  1. arm服务器获取文件路径中文,ssh 访问远程服务器文件路径
  2. php 魔术方法 多继承,day23:单继承多继承菱形继承__init__魔术方法
  3. matlab中patch命令_matlab 放大平移图形是超出边界问题的处理
  4. 又居家办公了,要签合同怎么办?
  5. 第三届北京智源大会开幕,全球最大智能模型“悟道2.0”重磅发布
  6. Python让你成为AI 绘画大师,简直太惊艳了!(附代码))
  7. 召唤超参调优开源新神器:集XGBoost、TensorFlow、PyTorch、MXNet等十大模块于一身...
  8. 《评人工智能如何走向新阶段》后记(再续13)
  9. 一个 Mybatis 开发神器:Fast MyBatis 超好用
  10. 推荐100份:高并发高可用和中台一网打尽