こん○●は!PHPerです。
さて、さっそく今日もCheckIOの第4問に挑戦します。
まずは、解答案をまとめてみます。
(1) 文字列を1文字ずつイテレーションする (2) 文字列が英文字以外であれば何もしない。 (3) 小文字に変換して、その文字のカウントをする。 (4) その際にもっとも高頻度に出現する文字のカウント数(a)をメモする (5) 最後に、(a)と同じ回数出現する文字を検索する(複数見つかる場合も) (6) 見つかった文字をソートして一番アルファベット順で先頭の文字を返す
なんか、(4)(5)(6)がダサイですね~。「頻度がもっとも高くて、アルファベット順がもっとも先頭」のものを一発で検索したいです。下記のように変えてみます。
(4) 最後に、出現頻度表をイテレーションする。 (5) 出現頻度が最も高いものを探す。同じだった場合はアルファベット順が先頭のものを優先する。
ということで、方針が決まったので、今回の処理に必要なPythonの言語やライブラリの仕様を検索してまとめてみました。
さて、レッツゴー!プログラミング!
今回は、一発で通りました~!キモチイ~!
def checkio(str):
d = {}
for letter in str:
if letter.isalpha():
lower = letter.lower()
if lower in d:
d[lower] += 1
else:
d[lower] = 0
find = False
max = 0
for item in d.items():
letter,count = item
if max < count:
find = letter
max = count
elif max == count and (not find or letter < find):
find = letter
return find