PAT B1042キャラクター統計

特定のテキストで最も頻繁に発生する英語の文字を見つけるプログラムを作成してください。

入力フォーマット:

1行に最大1000文字の文字列を入力します。文字列は、ASCIIコードテーブルに表示される任意の文字とスペースで構成され、少なくとも1つの英字を含み、キャリッジリターンで終了します(キャリッジリターンはカウントされません)。

出力フォーマット:

最も頻度の高い英字と出現回数が1行にスペースで区切られて出力されます。同順位の場合は、アルファベット順で最小の文字が出力されます。統計の場合、大文字と小文字は区別されず、小文字が出力されます。

入力例:

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

出力例:

e 7

問題解決のアイデア:

1.すべての入力文字列を小文字に変換し、文字を順にスキャンして、文字と出現回数をアプリケーションディクショナリに格納します。

2.現在の文字が出現したかどうかを確認します。出現した場合:+1を追加し、出現していない場合:辞書にキーを追加して、値を0に割り当てます。

3.すべてのスキャン後に統計ディクショナリを値で並べ替え、最初にキーと値を入れ替え、値を最大から最小に並べ替えます。

4.最大の値と最小のキーASCIIコード出力を持つ要素を見つけます

 

be_str = 入力()
low_str = be_str.lower()  将字符全部转换为小写 
count_dict = {} 

のために S low_str:
     もし S> = ' '  S <= ' Z ' もし S count_dict.keys( ):
            count_dict [s] + = 1
         else 
            dic1 = {s:1 } 
            count_dict.update(dic1)加圧值排序 
結果= zip(count_dict.values()、count_dict.keys())
r 
ソート=(結果、リバース= TRUE)  逆順値値によって 
POS = 0
 のために X におけるR&LT:
     IF X [0] == R&LT [0] [0]:
        POS + 1 =
 プリント(R&LT)
プリント(R&LT [pos-1] [1]、r [pos-1] [0])

 

おすすめ

転載: www.cnblogs.com/syq816/p/12695627.html