819. Most Common Word
static int wing=[]()
{
std::ios::sync_with_stdio(false);
cin.tie(NULL);
return ;
}(); class Solution
{
public:
string mostCommonWord(string paragraph, vector<string>& banned)
{
unordered_map<string,int> simap;
for(string s:banned)
simap[s]=-;
int beg=,flag=,max=;
paragraph.push_back(' ');
string res;
int sz=paragraph.length();
for(int i=;i<sz;i++)
{
if(isalpha(paragraph[i]))
paragraph[i]=tolower(paragraph[i]);
else if(paragraph[i]!=' ')
{
flag=;
continue;
}
else
{
string cur=paragraph.substr(beg,i-flag-beg);
simap[cur]++;
beg=i+;
flag=;
if(simap[cur]>max)
{
res=cur;
max=simap[cur];
}
}
}
return res;
}
};
以空格为标志,进行操作。
先把禁止序列扫进map,并将对应的字符串计数器置为-1000,由于段落最长就为1000,这样在扫描段落之后,禁止序列的字符串计数器就不可能为正数,就不会影响到非禁止序列高频单词的筛选。
观察段落序列可以发现,除了首个单词,每个单词前面都是空格,所以我们以空格为判定依据。
遇到字母时,操作只将字母转为小写
遇到非空格非字母,即遇到标点符号时,将标志位置为1,表示在下一个空格前有一个标点符号
遇到空格时,i 代表了空格的下标,beg代表了当前单词序列开始下标,即当前单词的第一个字母下标,用substr将单词提取出来,提取长度为 i-flag-1-beg+1=i-flag-beg
提取出来之后,将单词放入map,并增加计数器,然后比较计数器的值和最大值,进行相应操作。
操作之后,要将beg置为新单词的第一个字母,即i+1,将flag标志置为0。
这里还要注意一点,最后一个单词是以句号结尾的,末尾没有空格,循环不会操作最后一个单词,所以,为了让操作进行完整,在循环前,在段落后面补充了一个空格。
这个题用到了一点技巧性的东西,活用标志位,补充原字符串。
819. Most Common Word的更多相关文章
- 【Leetcode_easy】819. Most Common Word
problem 819. Most Common Word solution: class Solution { public: string mostCommonWord(string paragr ...
- LeetCode 819. Most Common Word (最常见的单词)
Given a paragraph and a list of banned words, return the most frequent word that is not in the list ...
- LeetCode 819. Most Common Word
原题链接在这里:https://leetcode.com/problems/most-common-word/description/ 题目: Given a paragraph and a list ...
- 819. Most Common Word 统计高频词(暂未被禁止)
[抄题]: Given a paragraph and a list of banned words, return the most frequent word that is not in the ...
- 【LeetCode】819. Most Common Word 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 正则+统计 日期 题目地址:https://leet ...
- leetcode Most Common Word——就是在考察自己实现split
819. Most Common Word Given a paragraph and a list of banned words, return the most frequent word th ...
- [Swift]LeetCode819. 最常见的单词 | Most Common Word
Given a paragraph and a list of banned words, return the most frequent word that is not in the list ...
- [LeetCode] Most Common Word 最常见的单词
Given a paragraph and a list of banned words, return the most frequent word that is not in the list ...
- 最常出现的字符串 Most Common Word
2018-10-26 00:32:05 问题描述: 问题求解: 方法一.Trie 最长出现的字符串,最容易想到的解法就是Trie树了,于是首先使用Trie树进行了实现,代码量有点大,当然了是可以A掉的 ...
随机推荐
- codeforces 722D Generating Sets 【优先队列】
You are given a set Y of n distinct positive integers y1, y2, ..., yn. Set X of n distinct positive ...
- SystemVerilog 带输出的task
1.task 的定义,输出定义为数组. /*- genRndPkt(): Generates random packet with the given length.*/ task genRndPkt ...
- 缩点+出入度 poj1236
题目链接:https://vjudge.net/contest/219056#problem/H 题意:先输入n,代表接下来有n个点,接下来n行,第i行里面的数(假设是)a,b...0(到0表示结束) ...
- 贪吃蛇Global Java实现(二)
package cn.tcc.snake.util; public class Global {public static final int CELL_SIZE=20;public static f ...
- appium ,selenium ,webdriver 运行原理与机制
做测试开发的童鞋都知道,UI自动化你绕不开selenium, webdrvier, appium框架,那么这三者之间有什么关联,它们的原理是什么呢? 简单来说就是: Selenium2 将浏览器原生 ...
- Python+Selenium学习--访问连接
场景 web UI测试里最简单也是最基本的事情就是访问1个链接了. 在python的webdrive中,访问url时应该使用get方法. 代码 #!/usr/bin/env python # -*- ...
- c# 文件过大时清空原有内容重新写入
FileStream fs = new FileStream("E:\\Test\\HistoryData.txt", FileMode.Append, FileAccess.Wr ...
- Django的具体操作(一)
一,首先说下什么是Django,Django其实就是一个框架,用python写的,能开发网站之类的. 二,django的组成 1,urls:网址入口关联到对应的views视图函数,(采用mvc开发模式 ...
- cell设置背景颜色为啥不起作用
利用poi设置背景颜色时,应如下配置, CellStyle cell=workbook.createCellStyle(); cell.setFillForegroundColor(IndexedCo ...
- JFinal Web开发学习(二)目录、架构、package设计
package分类 config是JFinal的项目配置 controller是控制器 handler可以设置全局处理器,例如判断用户请求中是否直接请求 FreeMarker的模板文件ftl或者htm ...