PAT Basic 1042. 字符統(tǒng)計(jì)(20)(C語(yǔ)言實(shí)現(xiàn))

我的PAT系列文章更新重心已移至Github,歡迎來(lái)看PAT題解的小伙伴請(qǐng)到Github Pages瀏覽最新內(nèi)容。此處文章目前已更新至與Github Pages同步。歡迎star我的repo

題目

請(qǐng)編寫(xiě)程序,找出一段給定文字中出現(xiàn)最頻繁的那個(gè)英文字母。

輸入格式:

輸入在一行中給出一個(gè)長(zhǎng)度不超過(guò) 1000 的字符串。字符串由 ASCII 碼表中任意可見(jiàn)字符及空格組成,至少包含 1
個(gè)英文字母,以回車(chē)結(jié)束(回車(chē)不算在內(nèi))。

輸出格式:

在一行中輸出出現(xiàn)頻率最高的那個(gè)英文字母及其出現(xiàn)次數(shù),其間以空格分隔。如果有并列,則輸出按字母序最小的那個(gè)字母。統(tǒng)計(jì)時(shí)不區(qū)分大小寫(xiě),輸出小寫(xiě)字母。

輸入樣例:

This is a simple TEST.  There ARE numbers and other symbols 1&2&3...........

輸出樣例:

e 7

思路

這道題也是夠簡(jiǎn)單。

開(kāi)一個(gè)int[26]記錄字母出現(xiàn)次數(shù)。
找最大值的時(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;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容