傳送門
https://pintia.cn/problem-sets/994805260223102976/problems/994805280817135616
題目
請(qǐng)編寫程序代嗤,找出一段給定文字中出現(xiàn)最頻繁的那個(gè)英文字母届氢。
輸入格式:
輸入在一行中給出一個(gè)長度不超過1000的字符串。字符串由ASCII碼表中任意可見字符及空格組成蒙秒,至少包含1個(gè)英文字母妹笆,以回車結(jié)束(回車不算在內(nèi))块请。
輸出格式:
在一行中輸出出現(xiàn)頻率最高的那個(gè)英文字母及其出現(xiàn)次數(shù)娜氏,其間以空格分隔拳缠。如果有并列,則輸出按字母序最小的那個(gè)字母贸弥。統(tǒng)計(jì)時(shí)不區(qū)分大小寫窟坐,輸出小寫字母。
輸入樣例:
This is a simple TEST. There ARE numbers and other symbols 1&2&3...........
輸出樣例:
e 7
分析
首先建個(gè)英文字母的數(shù)組绵疲,記錄每個(gè)英文字母出現(xiàn)的次數(shù)哲鸳,然后先讀入一行字符串,然后遍歷字符串進(jìn)行判斷盔憨,出現(xiàn)對(duì)應(yīng)字母就將數(shù)組中的指定位置自增1徙菠,最后遍歷整個(gè)數(shù)組輸出最大頻率及出現(xiàn)頻率最高的字符。
源代碼
//C/C++實(shí)現(xiàn)
#include <iostream>
#include <string.h>
using namespace std;
int ascii[26]; //26個(gè)字母
int main(){
char c[1001];
gets(c);
int max = 0;
char maxChar;
for(int i = 0; i < strlen(c); ++i){
if(c[i] >= 'A' && c[i] <= 'Z'){
++ascii[c[i] - 65];
}
else if(c[i] >= 'a' && c[i] <= 'z'){
++ascii[c[i] - 97];
}
}
for(int i = 0; i < 26; ++i){
if(ascii[i] > max){
max = ascii[i];
maxChar = i + 97;
}
}
printf("%c %d\n", maxChar, max);
return 0;
}