首页 > 代码库 > OJ刷题之《字母的争论》

OJ刷题之《字母的争论》

题目描述

某一天,26个小写的英文字母争论了起来,它们都想当老大,闹得不可开交。这时逗比的小甲想到了一个好办法使它们平息了下来,规则是这样的:读入一行仅由小写英文字母组成的字符串,统计这26个小写英文字母在这串字符中出现的次数,谁出现的此数多谁就是老大。另外,没有出现在这串字符中的小写英文字母就只能甘拜下风了。虽然这种办法对有些字母有些不公平,但是大家还是硬着头皮接受了。那么好了,现在问题来了,聪明的你就编道程序帮它们解决吧。

输入

一行仅由小写英文字母组成的字符串,不包含其他的各类字符。

输出

输出出现次数最多的字母和次数,如果出现次数相同则输出ASCII码大的

样例输入

goodgoodstudydaydayup

样例输出

d:5

代码如下:

#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
    char str[100];
    int num[100],i,j,k=0,d;
    d=0;
    gets(str);
    for (i=0; str[i]!='\0'; i++)
    {
        for (j=0; str[j]!='\0'; j++)
        {
              if (str[j]==str[i])
                k++;
        }
        num[i]=k;
        k=0;
    }
    for (i=0;str[i]!='\0';i++)
    {
        if (num[0]<num[i])
        {
            num[0]=num[i];
            d=i;
        }
    }
    cout<<str[d]<<":"<<num[d];
    return 0;
}

运行结果:

技术分享


开始没读懂题目意思,脑筋也没有转过弯来,傻乎乎的将26个字母用switch语句列出来然后num[26]统计字符个数,用另外一个变量输入字符,最后输出的时候,出题人也不厚道,第四个字母刚好是d,对应的num[3]刚好是第四位且最大,然后就...wrong answer了。。。再度冥思苦想,最后还是靠学长的提示下做了出来。




OJ刷题之《字母的争论》