ACM 字母統計

OpenSoucre發表於2014-04-03

字母統計

時間限制: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;
        
    }
}

 

相關文章