字母统计 思想值得学习

      

题目描述
现在给你一个由小写字母组成字符串,要你找出字符串中出现次数最多的字母,如果出现次数最多字母有多个那么输出最小的那个。

输入
第一行输入一个正整数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\n",97+i);
    }
}

 

posted @ 2016-01-25 16:39  X-POWER  阅读(314)  评论(0编辑  收藏  举报