PAT B1042文字統計(20point(S))

与えられた期間のテキストで表示され、最も頻繁に手紙を識別するためのプログラムを作成してください。

入力フォーマット:

1000年を超えていない行の文字列の所定の長さを入力します。ASCIIコード表の文字列少なくとも1つの英語の文字を含む任意の目に見える文字とスペース構図、キャリッジリターンと終了(入力カウントしません)。

出力フォーマット:

文字の最大出力周波数が表示され、それらの間の空間によって分離された行の出現数、。そこに並んで、出力アルファベット順で最小、その文字の場合。大文字小文字を区別しない統計情報、小文字の出力。

サンプル入力:

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

出力例:

e 7
  • アイデア:ハッシュ
    詳細:直接は最大文字kを見つけます

  • コード:

#include <bits/stdc++.h>
using namespace std;
int has[256];
int main(){
	string s;
	getline(cin, s);
	for(int i = 0; i < s.size(); ++i){
		if(islower(s[i])) has[s[i]]++;
		if(isupper(s[i])) has[tolower(s[i])]++;
	}
	int k = 'a'; 
	for(int i = 'a'; i <= 'z'; ++i){
		if(has[i] > has[k]){
			k = i; 
		}
	}
	printf("%c %d", k, has[k]);
	return 0;
} 
公開された243元の記事 ウォンの賞賛4 ビュー4060

おすすめ

転載: blog.csdn.net/qq_42347617/article/details/104045611