1071. Speech Patterns (25)
2016-02-27 15:06
435 查看
注意最后一个单词是随着字符串的结束而结尾的
#include <iostream>
#include <cstdio>
#include <unordered_map>
#include <limits>
using namespace std;
bool valid(char c){
return (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9');
}
int main(){
string s;
getline(cin, s);
for(auto& c : s){
if(c >= 'A' && c <= 'Z'){
c = 'a' + c - 'A';
}
}
unordered_map<string, int> table;
size_t idx = 0;
while(!valid(s[idx]) && idx < s.size()) ++idx;
size_t pos = idx;
while(true){
if(idx == s.size()) break;
if(valid(s[idx]) && idx < s.size()) ++idx;
else{
string sub = s.substr(pos, idx - pos);
if(table.find(sub) == table.end()) table.insert({sub, 0});
table[sub]++;
while(!valid(s[idx]) && idx < s.size()) ++idx;
pos = idx;
}
}
if(pos < idx){
string sub = s.substr(pos, idx - pos);
if(table.find(sub) == table.end()) table.insert({sub, 0});
table[sub]++;
}
int maxlen = 0;
string word;
for(auto& t : table){
if(maxlen < t.second){
word = t.first;
maxlen = t.second;
}else if(maxlen == t.second){
if(word > t.first){
word = t.first;
}
}
}
if(word.size())
cout << word << " " << maxlen;
return 0;
}
#include <iostream>
#include <cstdio>
#include <unordered_map>
#include <limits>
using namespace std;
bool valid(char c){
return (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9');
}
int main(){
string s;
getline(cin, s);
for(auto& c : s){
if(c >= 'A' && c <= 'Z'){
c = 'a' + c - 'A';
}
}
unordered_map<string, int> table;
size_t idx = 0;
while(!valid(s[idx]) && idx < s.size()) ++idx;
size_t pos = idx;
while(true){
if(idx == s.size()) break;
if(valid(s[idx]) && idx < s.size()) ++idx;
else{
string sub = s.substr(pos, idx - pos);
if(table.find(sub) == table.end()) table.insert({sub, 0});
table[sub]++;
while(!valid(s[idx]) && idx < s.size()) ++idx;
pos = idx;
}
}
if(pos < idx){
string sub = s.substr(pos, idx - pos);
if(table.find(sub) == table.end()) table.insert({sub, 0});
table[sub]++;
}
int maxlen = 0;
string word;
for(auto& t : table){
if(maxlen < t.second){
word = t.first;
maxlen = t.second;
}else if(maxlen == t.second){
if(word > t.first){
word = t.first;
}
}
}
if(word.size())
cout << word << " " << maxlen;
return 0;
}
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C与C++之间相互调用实例方法讲解
- 解析C++中派生的概念以及派生类成员的访问属性