统计字符串里面哪个英文字母字符最多,并统计次数。
【输入形式】
第一行输入字符串。
【输出形式】
输出出现次数最多(相同则一起输出)的字符和次数,并用空格隔开。
【样例输入1】
定义一个长度为26的整型数组,记录每个字符出现的次数。
你要说明一下,要考虑大小写区分吗?也就是a和A算同一个字符么?
#include <iostream>
#include <string.h>
#include <algorithm>
using namespace std;
typedef struct
{string ch;
int total;
}sum;
bool cmp1(sum a,sum b){
return a.total>b.total;
}
int main()
{
string str;
getline(cin,str);
int len=str.length();
sum s[50];
for(int i=0;i<len;i++)
{
int count=0;
for(int j=0;j<len;j++)
{
if(str[i]==str[j])
{
++count;
}
}
s[i].ch=str[i];
s[i].total=count;
}
sort(s,s+len,cmp1);
cout<<s[1].total<<" "<<s[1].ch<<endl;
return 0;
}
不区分大小写,供参考:
#include <stdio.h>
int main()
{
int cnt[26] = {0}, max, i;
char str[128];
gets(str);
for (i = 0;str[i];i++)
{
if (str[i]>='a' && str[i]<='z')
cnt[str[i]-'a']++;
else if (str[i]>='A' && str[i]<='Z')
cnt[str[i]-'A']++;
}
for (i = 0,max = 0;i < 26;i++)
{
if (cnt[i] > max) max = cnt[i];
}
for (i = 0;i < 26;i++)
if (cnt[i] == max)
printf("%c:%d\n", i+'a', cnt[i]);
return 0;
}