-1

問題は、文字列内で最も頻繁に出現する文字を見つけることです。最も頻繁に出現する文字は、降順で出力する必要があります。同数の場合、つまり同じ出現頻度の場合は、同じ頻度の文字をアルファベット順に出力する必要があります。

例えば:

s="aaccbba"

出力は

(('a',3),('b',2),('c',2))

ではない

(('a',3),('c',2),('b',2))

注: 制御フロー ステートメントを使用しないでください。

私が使用しているpythonのバージョンは2.7.5です

カウンターも使ってみましたがだめでした。

4

1 に答える 1

3

使用collections.Counter:

>>> from collections import Counter
>>> Counter("aaccbba").most_common()
[('a', 3), ('c', 2), ('b', 2)]

出力は次のように並べ替えることができます。

>>> sorted(Counter("aaccbba").most_common(), key=lambda v: (-v[1], v[0]))
[('a', 3), ('b', 2), ('c', 2)]

bしかし実際には、最初にリストするかc最初にリストするかに実際の違いはありません。それ以外は等しいです。

出力を並べ替えると、2 つの作業が行われます。Counter()すでにアイテムがソートされていますが、上記はわずかに異なる基準でロットを再度ソートするだけです。

于 2013-05-29T07:43:10.907 に答える