小藍找字符串出現最多次數的字母及次數


廢話不多說直接上題

題目描述

小藍正在學習一門神奇的語言,這門語言中的單詞都是由小寫英文字母組 成,有些單詞很長,遠遠超過正常英文單詞的長度。小藍學了很長時間也記不住一些單詞,他准備不再完全記憶這些單詞,而是根據單詞中哪個字母出現得最多來分辨單詞。

現在,請你幫助小藍,給了一個單詞后,幫助他找到出現最多的字母和這 個字母出現的次數。

輸入描述

輸入一行包含一個單詞,單詞只由小寫英文字母組成。

對於所有的評測用例,輸入的單詞長度不超過 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