TJU 2468 Counting Letters

                      2468 Counting Letters 

As a talented student, your boss gave you a task. Given a text string, you should find out which letters appear most frequently.

Really simple, isn't it?

Input

The first line of the input is the number of test cases. Then some test cases followed.

Each test case contains only one line, indicating the string mentioned above.

You can assume there is only lower case letters in the string. The length of the string is more than 0 and no more than 100.

Output

You should output one line for each test case, indicating the most frequent letters. Please note there may be more than one such letter, so you should output all of them, and these letters should be in the same order as the alphabet, that is, 'a', 'b', 'c', 'd' ... 'z'.

Sample Input

2
abcda
tjucstju

Sample Output

a
jtu

Hint

In the first sample test case, 'a' appears twice, while 'b','c','d' only appear once. So 'a' is the most frequent letter.

In the second sample test case, 't', 'j' and 'u' appear twice, so you should output them all, and 'j' should be the first.

Please note you should not output any unnecessary spaces or empty lines, or else you may get 'Presentation Error'.

 

解题报告:好久没有在OJ上做题了,今天有人问我这道题怎么做,嘿嘿,就写了写,题意就是统计字母出现最多的,如果有多个字母出现一样就按字母的前后顺序输出,

代码如下:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int MAX = 110;
int main()
{
    int n, i, max, len, num;
    char c[MAX];
    int count[30];
    scanf("%d", &n);
    while (n --)
    {
        memset(count, 0, sizeof(count));
        scanf("%s", c);
        len = strlen(c);
        for(i = 0; i < len; i ++)
        {
            num = c[i] - 'a';
            count[num]++;
        }
        max = 0;
        for (i = 0; i < 26; i ++)
        {
            if(max < count[i])
            {
                max = count[i];
            }
        }
        for (i = 0; i < 26; i ++)
        {
            if (max == count[i])
            {
                printf("%c", i + 'a');
            }
        }
        printf("\n");
    }
    return 0;
}

 

转载于:https://www.cnblogs.com/lidaojian/archive/2012/08/27/2659137.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值