入门oj 5499: 讲话模式

Description

每个人说话都有口头禅,现给出一个字符串,请求出其中出现次数最多的单词(不区分大小写)。

Input

输入一行,长度小于等于1048576的字符串
输入至少包含一个字母或数字

Output

输出一行,为出现次数最多的单词及出现的次数,用空格分开
如果结果不唯一,则输出字典序最小的那个,这个单词必须以小写的形式输出。

Sample Input

Can a can can a can? It can !

Sample Output

can 5

HINT

1简单的一个map题

2这个题的读入比较恶心,需要转大小写,还要判空格和标点,具体方法如代码

#include<bits/stdc++.h>
using namespace std;
int f[1000001],ans;
char s[1048579];
map<string,int> a;
map<string,int>::iterator flag;//迭代器 
int main(){
    gets(s);
    int len=strlen(s);
    string q="";
    for(int i=0;i<len;i++){
        
        if(s[i]==' ') {
            a[q]++;                
            q="";
            continue;
        }//判空格,如果是空格那么就表示一个单词结束了,可以把这个单词打入map 
        if(s[i]>='A'&&s[i]<='Z') s[i]+=32;//大写转小写 
        if(s[i]>='a'&&s[i]<='z') q+=s[i]//如果这个字符是一个字母,就把他放入q串 ;
    }
    for(map<string,int>::iterator i=a.begin();i!=a.end();i++)    //迭代器 
        if(ans<(*i).second)
            flag=i,ans=(*flag).second;        //算出最大值    
    cout<<(*flag).first<<" "<<(*flag).second;
} 
you are both faker
原文地址:https://www.cnblogs.com/cwjr/p/12942397.html