Problem E: 找出出现次数最多的字母

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;    
}

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值