題意
輸出給定字串出現最多的字串(小寫輸出)和出現次數,
所求字串要求:字符中可以含有A-Z、0-9,
比如說題目給出的Can1,我們可以轉換成can1,can1就算一個字串整體,而不是單獨的取出can1里面的can來加一,
思路
先把大寫字母全部轉換成小寫,然后再用map存盤單詞個數即可,簡單用法,
注意
-
有個特殊的資料要判斷,不寫的話牛客可以AC,但是PTA最后一組資料會報錯,
特例:給出的字串最后一個字符如果不是'0'-'9'、'a'-'z'的話,單獨算一個字串判斷,
-
for回圈的時候注意判斷空字串(空格)出現的情況
-
也可以用sstreamstring來處理一下,都可以的
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;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/267331.html
標籤:其他
上一篇:與情預測股票
