题目链接:http://pat.zju.edu.cn/contests/pat-a-practise/1071
/*
* map:自动创建机制。
* transform:将某操作应用于指定范围的每个元素,类似于foreach。
* 定义在头文件algorithm中。
* ::tolower:将一个字符大写变小写。
*/
#pragma warning(disable: 4786)
#include <stdio.h>
#include <iostream>
#include <string>
#include <map>
#include <algorithm>
#define SIZE 1048576+10
using namespace std;
char buf[SIZE];
bool is_alpha(char ch)
{
if((ch >= '0' && ch <= '9') || (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') )
return true;
else
return false;
}
int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("E:\\in.txt", "r", stdin);
#endif
gets(buf);
string str = buf;
transform(str.begin(), str.end(), str.begin(), ::tolower);
map<string, int> m;
int s, e, i;
i = 0;
int max=-1;
string max_str = "";
while ( i < str.size())
{
while(!is_alpha(str[i]) && i < str.size())
i++;
s = i;
//
while(is_alpha(str[i]) && i < str.size())
i++;
e = i;
string word = str.substr(s, e-s);
m[word]++;//word,若未出现,会自动创建
if(m[word] > max || (m[word] == max && max_str > word))
{
max = m[word];
max_str = word;
}
}
cout << max_str << " " << max << endl;
return 0;
}