# 訊息處理 https://neoj.sprout.tw/problem/2333/ ### 題目敘述 小高某天收到來自宇宙的訊息,是由大小寫英文字母、數字以及#、@、%所組成的字串。 小高知道這個宇宙訊息除了英文字母之外其他的都是雜訊,因此小高想要寫一份程式去除宇宙訊息中的雜訊,同時不改變英文字母的順序,也就是讓宇宙訊息只剩下英文字母,然後分析每個字母在宇宙訊息中分別出現幾次。但小高不太會寫程式,你可以幫幫他嗎? 小高只看得懂小寫英文字母,所以希望你能順便把大寫字母轉成小寫的。 ### 輸入說明 第一行有一個正整數$N$,$N≤100000$,表示宇宙訊息的長度為$N$,下一行是一個長度為$N$的字串,只包含大小寫英文字母、數字、#、@、%,保證該字串必包含一個英文字母。 ### 輸出說明 輸出一行字串,為宇宙訊息去除雜訊後的結果。 接著輸出26個數字以空白分開,分別代表 a~z 在宇宙訊息去除雜訊後出現的個數。 行尾不含空格,最後一行要換行。 ### 範例輸入 ``` 10 Abc#def%%G ``` ### 範例輸出 ``` abcdefg 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ``` # Code ```cpp #include <iostream> using namespace std; char n[100010] = {}; int main(){ int N; cin >> N; for (int t = 0; t < N; t++) cin >> n[t]; for (int t = 0; t < N; t++) { if (n[t] >= 65 && n[t] <= 90) n[t] += 32; else if (n[t] < 97 || n[t] > 122) n[t] = 0; } for (int t = 0; t < N; t++) { if (n[t] != 0) cout << n[t]; } cout << "\n"; for (int t = 97; t <= 122; t++) { int k = 0; for (int r = 0; r <= N; r++) { if (n[r] == t) k++; } cout << k; if (t == 122) break; cout << " "; } cout<<"\n"; } ```