ACM 字母统计

字母统计

时间限制:3000 ms  |  内存限制:65535 KB
难度:1
 
描述
现在给你一个由小写字母组成字符串,要你找出字符串中出现次数最多的字母,如果出现次数最多字母有多个那么输出最小的那个。
 
输入
第一行输入一个正整数T(0<T<25)
随后T行输入一个字符串s,s长度小于1010。
输出
每组数据输出占一行,输出出现次数最多的字符;
样例输入
3
abcd
bbaa
jsdhfjkshdfjksahdfjkhsajkf
样例输出
a
a
j
时间限制:3000 ms  |  内存限制:65535 KB
难度:1
 
描述
现在给你一个由小写字母组成字符串,要你找出字符串中出现次数最多的字母,如果出现次数最多字母有多个那么输出最小的那个。
 
输入
第一行输入一个正整数T(0<T<25)
随后T行输入一个字符串s,s长度小于1010。
输出
每组数据输出占一行,输出出现次数最多的字符;
样例输入
3
abcd
bbaa
jsdhfjkshdfjksahdfjkhsajkf
样例输出
a
a
j
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;

struct WordCnt{
    char ch;
    int cnt;
    WordCnt(int aCh, int aCnt):ch(aCh),cnt(aCnt){}
    bool operator <(const WordCnt &a) const{
        if(cnt!=a.cnt) return cnt > a.cnt;
        else return ch < a.ch;
    }
};

int main(){
    int T;
    cin >> T;
    for (int icase =  0; icase < T; ++icase) {
        string str;
        cin >>str;
        vector<WordCnt> word;
        for (int i = 0;  i < str.length(); ++ i) {
            int  j = 0;
            for (j = 0; j < word.size(); ++ j) {
                if(word[j].ch == str[i]) word[j].cnt++;
            }
            if(j == word.size()) word.push_back(WordCnt(str[i],1));
        }
        sort(word.begin(),word.end());
        cout<<word[0].ch<<endl;
        
    }
}
原文地址:https://www.cnblogs.com/xiongqiangcs/p/3642783.html