1. 程式人生 > 實用技巧 >PAT 乙級1042 字元統計 (20分)

PAT 乙級1042 字元統計 (20分)

輸入格式:

輸入在一行中給出一個長度不超過 1000 的字串。字串由 ASCII 碼錶中任意可見字元及空格組成,至少包含 1 個英文字母,以回車結束(回車不算在內)。

輸出格式:

在一行中輸出出現頻率最高的那個英文字母及其出現次數,其間以空格分隔。如果有並列,則輸出按字母序最小的那個字母。統計時不區分大小寫,輸出小寫字母。

輸入樣例:

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

輸出樣例:

e 7

思路:通過查表的方法記錄並找出頻率最高的字母
#include<iostream>
#include
<string> using namespace std; int main() { int ascii[128] = { 0 }; string str; char ch = '0'; while (cin >> str) { /*arry.push_back()*/ for (unsigned int i=0;i<str.size();i++) { int index = str[i]; if (index >= 65 && index <= 90
)//大寫轉換為小寫 { index += 32; ascii[index]++; } else ascii[index]++; } if (getchar()=='\n')break;//遇到換行符退出迴圈 } int maxindex=97,max=ascii[maxindex];//找出頻率最高的字母 for (int i = 98; i <=122; i++) { if (max < ascii[i]) { max
= ascii[i]; maxindex = i; } } ch = maxindex; cout << ch << " " << ascii[maxindex]; return 0; }