您的位置:首页 > 编程语言 > C语言/C++

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ PAT Speech Patterns