我的PAT系列文章更新重心已移至Github瘸彤,歡迎來看PAT題解的小伙伴請到Github Pages瀏覽最新內(nèi)容质况。此處文章目前已更新至與Github Pages同步玻靡。歡迎star我的repo囤捻。
題目
請編寫程序,找出一段給定文字中出現(xiàn)最頻繁的那個英文字母依溯。
輸入格式:
輸入在一行中給出一個長度不超過 1000 的字符串。字符串由 ASCII 碼表中任意可見字符及空格組成瘟则,至少包含 1
個英文字母黎炉,以回車結(jié)束(回車不算在內(nèi))。
輸出格式:
在一行中輸出出現(xiàn)頻率最高的那個英文字母及其出現(xiàn)次數(shù)醋拧,其間以空格分隔慷嗜。如果有并列,則輸出按字母序最小的那個字母丹壕。統(tǒng)計時不區(qū)分大小寫庆械,輸出小寫字母。
輸入樣例:
This is a simple TEST. There ARE numbers and other symbols 1&2&3...........
輸出樣例:
e 7
思路
這道題也是夠簡單菌赖。
開一個int[26]記錄字母出現(xiàn)次數(shù)缭乘。
找最大值的時候從后向前找,找到的就是最大值中字母序最小的琉用。
代碼
最新代碼@github堕绩,歡迎交流
#include <stdio.h>
#include <ctype.h>
int main()
{
char c;
int count[26] = {0}, max = 25;
while((c = getchar()) != '\n')
if(isalpha(c))
count[tolower(c) - 'a']++;
/* find forward from end in case there are multiple maximums */
for(int i = 25; i >= 0; i--)
if(count[i] >= count[max])
max = i;
printf("%c %d", max + 'a', count[max]);
return 0;
}