小蓝找字符串出现最多次数的字母及次数


废话不多说直接上题

题目描述

小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组 成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。

现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这 个字母出现的次数。

输入描述

输入一行包含一个单词,单词只由小写英文字母组成。

对于所有的评测用例,输入的单词长度不超过 1000。

输出描述

输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪 个。如果有多个字母出现的次数相等,输出字典序最小的那个。

第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数。

输入输出样例

示例 1

输入

lanqiao

输出

a
2

示例 2

输入

longlonglongistoolong

输出

o
6

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M

 

  当时我第一次做的时候特傻,一步一步来的,第一次看错了题目,以为它是要一个一个输入字母,然后我就没用字符串数组。第一次,在看错题的问题下,我的算法是先输入字母统计数,然后遍历找出输入字母出现的次数,再找出最多的那个字母的次数,输出。有三步,都只是无脑用了for、while循环以及if的判断,真无语,不知道写了个啥。第二次,再问了彭老师,被以回复“思路逻辑不对,仔细看懂例题,然后分析自己的每一条语句!”后我认真看了题目,发现那个输入看错了。。。接着我的第二次代码算法变成了:输入字符串统计字符串中字母个数,然后遍历找出输入字母出现的次数,再找出最多的那个字母的次数。。对比第一次,我明白了为什么人会在同一个地方跌倒---方法没变,错误方法行走,摔倒的迟早的事情。。但是当时我并没有意识到这一点,自我感觉还蛮好的,将彭老师话中”分析自己每一条语句“的指导牢记后,将每一条语句都写了注释。。。真无语。转折点出来了,是在晚上也就是半个小时前。我,看了答案。大神代码如下:

#include<stdio.h>
int main(int argc;char *argv[])
{
    char ch;
    int cnt[26]=0;
    int i;
    int max=0;
    while((ch=getchar())!="\n")
    {
        cnt[ch-'a']++;
    }//输入字母,统计次数
    for(i=1;i<26;i++)
    {
        if(cnt[i]>cnt[max])
        {
            max=i;
        }
    }//找出次数最多的字母次数
    printf("%c\n%d",max+'a',cnt[max]);
    return 0;
}

  其实刚刚码完才觉得自己好像第一次并没有理解错误。。这里值得一提的是max+'a',意思是数字转换成字母。不多说了,有点晚了,我比较养生哈哈,总的来说我真的是很菜,自己摸索的三个月的C到头来最最最基础的都不会,呵呵。没事,一切都还来得及,记住了哦!反思反思反思!为什么别人写得出来,我就不行了。当然,关于这一题的话还是出在了我对ASCII表中字符串转数字用的不溜不熟,到时候...诶,别到时候了就明天,取搞明白这家伙哈。就这样,我去睡了,晚安世界。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM