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

1042 字元統計 (20分)

題目

請編寫程式,找出一段給定文字中出現最頻繁的那個英文字母。

輸入格式

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

輸出格式

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

輸入樣例:

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

輸出樣例:

e 7

解析

  用陣列儲存字母的個數即可,遍歷一遍字串 a[s[i]] ++,加完之後若和當前最大的數相同,則需要取一下字母序小的那個
  注意轉換成小寫字母

答案

#include<iostream>
#include<algorithm>
#include<string>
#include<stdio.h>
using namespace std;
int a[256];
int main(){
    string s;
    getline(cin,s);
    char max = 'a';
    for(int i = 0 ; i<s.length() ; i++){
        s[i] = tolower(s[i]);
        if(s[i] >='a' && s[i] <= 'z'){
            a[s[i]] ++;

            if(a[max] < a[s[i]] ){
                max = s[i];
            }else if(a[max] == a[s[i]]){
                if(max > s[i]){
                    max = s[i];
                }
            }
        }
    }
    printf("%c %d",tolower(max),a[max]);
}