TJU Counting Letters

来源:互联网 发布:易语言皮肤模块源码 编辑:程序博客网 时间:2024/05/09 00:05


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

2abcdatjucstju

Sample Output

ajtu

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'.




题意概述:输入一个字符串,将其中出现频率最高的字符输出。当有多个满足条件时,按由a到z的顺序输出。

解题思路:用map做关联数组,这样可以轻松解决这个问题。只需要深入了解一下C ++标准库中map容器的用法。

源代码:

#include<iostream>
#include<string>
#include<map>
using namespace std;
int main()
{
    int t;
    string s;
    map<char,int>Set;
    cin>>t;
    while(t--)
    {
         cin>>s;
         for(int i=0;i<s.size();++i)
             Set[s[i]]++;
         int max=0;
         map<char,int>::iterator pos;
         for(pos=Set.begin();pos!=Set.end();++pos)
             if(pos->second > max)max=pos->second;
         for(pos=Set.begin();pos!=Set.end();++pos)
             if(pos->second==max)cout<<pos->first;
         cout<<endl;
         Set.clear();
    }
    return 0;
}