字母统计
-
描述
-
现在给你一个由小写字母组成字符串,要你找出字符串中出现次数最多的字母,如果出现次数最多字母有多个那么输出最小的那个。
-
输入
-
第一行输入一个正整数T(0<T<25)
随后T行输入一个字符串s,s长度小于1010。
输出
- 每组数据输出占一行,输出出现次数最多的字符; 样例输入
-
3 abcd bbaa jsdhfjkshdfjksahdfjkhsajkf
样例输出
-
a a j
-
第一行输入一个正整数T(0<T<25)
#include <stdio.h>
#include <string.h>
main ()
{
int n, m, i, max, k;
char a[1011];
scanf ("%d", &n);
getchar();
while(n--)
{
scanf("%s", a);
k = max = 0;
m = strlen (a); //判断数组长度。
int b[26] = {0};//定义b[i]为0
for(i=0;i<m;i++)
b[a[i]-97]++; //对这一个数组的每一位相加
for(i=0;i<26;i++)
if(max < b[i])
{
max = b[i];
k = i;
}
printf("%c\n", k+97);
}
}
//自己前几天做了一个用数组位置表示字母的题,自己尝试了一下,总算做对了。只是刚开始把字母考虑成了24个。。。,太马虎了。
最优程序
#include<stdio.h>
#include<string.h>
main()
{
int x,i,max,q;
char a[1011];
scanf("%d",&x);
getchar();
while(x--)
{
int s[26]={0};
gets(a);
for(i=strlen(a)-1;i>=0;i--)
s[a[i]-97]++;
max=0;
for(i=0;i<26;i++)
if(max<s[i]) max=s[i],q=i;
printf("%c\n",q+97);
}
}
和自己做得差不多,好高兴。