PTA1071 - Speech Patterns - map计算不一样单词个数

题意

输出给定字符串出现最多的字符串(小写输出)和出现次数。ios

所求字符串要求:字符中能够含有A-Z、0-9。spa

好比说题目给出的Can1,咱们能够转换成can1,can1就算一个字符串总体,而不是单独的取出can1里面的can来加一。code

思路

先把大写字母所有转换成小写,而后再用map存储单词个数便可,简单用法。ci

注意

  1. 有个特殊的数据要判断,不写的话牛客能够AC,可是PTA最后一组数据会报错。字符串

    特例:给出的字符串最后一个字符若是不是'0'-'9'、'a'-'z'的话,单独算一个字符串判断。get

  2. for循环的时候注意判断空字符串(空格)出现的状况string

  3. 也能够用sstreamstring来处理一下,均可以的io

AC代码

#include<iostream>
#include<string.h>
#include<cmath>
#include<map>

using namespace std;
#define inf 0x3f3f3f3f
typedef long long ll;

map<string,int> mp;

int main()
{
    string s;
    getline(cin,s);
    int l=s.length();
    for(int i=0;i<l;i++)
    {
        if(s[i]>='A'&&s[i]<='Z')
            s[i]+=32;
    }
    string ss;
    for(int i=0;i<l;i++)
    {
        if((s[i]>='0'&&s[i]<='9')||(s[i]>='a'&&s[i]<='z'))
            ss+=s[i];
        else if(ss!="")
            mp[ss]++,ss="";
    }
    ss=s[l-1];  // 最后一个字符特判
    if(!(s[l-1]>='0'&&s[l-1]<='9')||!(s[l-1]>='a'&&s[l-1]<='z'))
        mp[ss]++;
    string ans;
    int ma=0;
    for(auto&i:mp)
    {
        if(i.second>ma)
            ma=i.second,ans=i.first;
    }
    cout<<ans<<" "<<ma<<endl;
    return 0;
}
相关文章
相关标签/搜索