题目

Description

判断一个由a-z和A-Z字符组成的字符串中哪个字符出现的次数最多

Input

第1行是测试数据的组数n,每组测试数据占1行,是一个由a-z和A-Z字符组成的字符串,每组测试数据之间有一个空行,每行数据不超过1000个字符且非空

Output

n行,每行输出对应一个输入。一行输出包括出现次数最多的字符和该字
符出现的次数,中间是一个空格。
如果有多个字符出现的次数相同且最多,那
么输出ASCII码最小的那一个字符

Sample Input

2
Abbccc
Adfadffasdf

Sample Output

c 3
f 4

算法

读一遍,统计下即可

代码

/*
By:OhYee
Github:OhYee
Blog:http://www.oyohyee.com/
Email:oyohyee@oyohyee.com

かしこいかわいい?
エリーチカ!
要写出来Хорошо的代码哦~
*/
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <string>
#include <iostream>
#include <vector>
#include <list>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <functional>
using namespace std;

const int INF = 0x7FFFFFFF;
const int maxn = 500;

int cnt[maxn];

void Do() {
    memset(cnt,0,sizeof(cnt));
    char c = getchar();
    while(!((c >= 'a'&&c <= 'z') || (c >= 'A'&&c <= 'Z')))
            c = getchar();
    while((c >= 'a'&&c <= 'z') || (c >= 'A'&&c <= 'Z')) {
        cnt[c]++;
        c = getchar();
    }
    int ans,Max = 0;
    for(int i = 0;i < maxn;i++) {
        if(cnt[i] > Max) {
            ans = i;
            Max = cnt[i];
        }
    }
    printf("%c %d\n",ans,Max);
}

int main() {
    int T;
    scanf("%d",&T);
    while(T--)
        Do();
    return 0;
}