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;
}
相關文章
相關標籤/搜索