题目描述 现在给你一个由小写字母组成字符串,要你找出字符串中出现次数最多的字母,如果出现次数最多字母有多个那么输出最小的那个。 输入 第一行输入一个正整数T(0<T<25) 随后T行输入一个字符串s,s长度小于1010。 输出 每组数据输出占一行,输出出现次数最多的字符; 样例输入 3 abcd bbaa jsdhfjkshdfjksahdfjkhsajkf 样例输出 a a j 提示
这一种 将 字母转换成 数字 并且 作为数组下表的情况 十分的好 省时省力
#include <stdio.h> #include<algorithm> #include <string.h> using namespace std; bool cmp(int a,int b) { return a>b; } int main() { int l,i,j,m,n,t,a[30],q; char b[1020]; scanf("%d",&t); while(t--) { memset(a,0,sizeof(a)); //全部初始化 0 scanf("%s",b); l=strlen(b); for(i=0;i<l;i++) { a[b[i]-97]++; } sort(a,a+30,cmp); //这时候 a[0]就是出现最多的次数. q=a[0]; memset(a,0,sizeof(a)); for(i=0;i<l;i++) { a[b[i]-97]++; } for(i=0;i<l;i++) { if(a[i]==q) { q=i; break; } } printf("%c ",97+i); } }