文字列内の文字を頻度の順に、次にアルファベット順に並べ替えるアルゴリズムを作成しようとしています。たとえば、「apple」は「aelpp」になります。「バナナ」は「bnnaaa」になります。
私はさまざまな言語を知っていますが、今のところPythonを使用してコーディングしています。これは私がこれまでに持っているものですが、周波数ソートがないため機能しません。
def order(word):
word = word.lower()
storage = [0] * 26
for c in word:
storage[ord(c) - 97] += 1
newWord = []
for l, c in enumerate(storage):
for i in range(0, storage[l]):
newWord.append(chr(l + 97))
return ''.join(newWord)
このアルゴリズムを最も効率的に正しく実装する方法について何かアドバイスはありますか?