输入一个由小写英文字母构成的字符串,统计出现次数最多的字母及出现次数并输出。
输入格式:
输入一个由小写英文字母构成的字符串。
输出格式:
输出出现次数最多的字母及出现次数,中间用逗号,分隔,最后换行。
输入样例:
abcdefghijklmnopqrstuvwxyzmmm
输出样例:
m,4
映射关系
这里我根据ASCII码值,映射到另一个区间。另外,也可以发下,
大写字母和小写字母之间的ASCII码值不是连续的。
#include<stdio.h>
#include<ctype.h>
#include<string.h>
#define N 60
#define LENGTH 10000
//#define debug
int cnt[N];//用来记录每个字母的个数
/*
0 -> A
z -> 57
*/
int main()
{
char str[LENGTH];
gets(str);
memset(cnt,0,sizeof(cnt));
int len = strlen(str);
for(int i = 0; i < len; i++)
{
if(isalpha(str[i]))
{
#ifdef debug
printf("%c---->%d\n",str[i],str[i] - 'A');
#endif // debug
cnt[str[i] - 'A' ]++;// 映射到另一个区间
}
}
#ifdef debug
for(int i = 0; i < N; i++)
printf("%d ",cnt[i]);
putchar('\n');
#endif // debug
int M = 0;//表示最多的那个字母
for(int i = 0; i < N; i++)
{
if(cnt[i] > cnt[M])
M = i;
}
printf("%c,%d",M + 'A', cnt[M]);
return 0;
}