Problem E: 找出出现次数最多的字母
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 4651 Solved: 2076
Description
找出出现次数最多的字母
Input
多组测试,现在给你一行密文,全部由小写字母组成(不超过100个),你要找出出现次数最多的那个字母
Output
每组输出1行,输出出现次数最多的那个字母
Sample Input
aaaaaaabbc
nnnnnnnasnnnnasaaaa
Sample Output
a
n
HINT
这题刚开始自己的思路是两个循环找出来用数组计数然后第一个循环的i可以变,但是这种情况对aaaacccccccaa就直接跳出循环了。所以这个思路是不行的。接着想到桶排,emmm字符号好像没有桶排。然后想到也就26个字母。突然想到思路出现在lry的代码中(太久没碰忘了
我们把要计数的26个字母放到字符常量数组中,然后通过两重循环用数组去计数就可以轻松打出了。转换字符有关系的,统计多个字符个数的,且字符已知可控,可以放字符常量数组试试。
代码实现:
#include<stdio.h>
#include<string.h>
int b[100];
char a[100];
char str[200]={"abcdefghijklmnopqrstuvwxyz"};
int main(void)
{
int n,i,j,k;
while(gets(a)!=NULL)
{
k=0;memset(b,0,sizeof(b));
for(i=0;i<26;i++)
{
for(j=0;j<strlen(str);j++)
{
if(a[j]==str[i])
{
b[k]++;
}
}
k++;
}
int index=0;
for(i=0;i<k;i++)
{
if(b[index]<b[i])
index=i;
}
printf("%c\n",str[index]);
memset(a,'\0',sizeof(a));
}
return 0;
}