廢話不多說直接上題
題目描述
小藍正在學習一門神奇的語言,這門語言中的單詞都是由小寫英文字母組 成,有些單詞很長,遠遠超過正常英文單詞的長度。小藍學了很長時間也記不住一些單詞,他准備不再完全記憶這些單詞,而是根據單詞中哪個字母出現得最多來分辨單詞。
現在,請你幫助小藍,給了一個單詞后,幫助他找到出現最多的字母和這 個字母出現的次數。
輸入描述
輸入一行包含一個單詞,單詞只由小寫英文字母組成。
對於所有的評測用例,輸入的單詞長度不超過 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表中字符串轉數字用的不溜不熟,到時候...誒,別到時候了就明天,取搞明白這家伙哈。就這樣,我去睡了,晚安世界。