gpt4 book ai didi

algorithm - 我应该如何按频率顺序排列字母?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:35:02 25 4
gpt4 key购买 nike

我正在尝试编写一种算法,按照频率顺序和字母顺序重新排列字符串中的字母。例如,“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)

关于如何最有效地正确实现该算法的任何建议?

最佳答案

这是一个(主要是)pythonic 示例,说明如何在 python 中处理此问题,我希望评论足以解释正在发生的事情:

words = ["apples", "banannas", "oranges"]

def main():
# our list of jumbled words
jumbled = []
for word in words:
# dictionary of letter / frequency pairs.
letters = {};
# get letter frequency
for letter in word:
if letter in letters:
letters[letter] += 1
else:
letters[letter] = 1
# sort the letter / frequency pairs on descending frequency
jumbled_word = sorted(letters.items(), key = lambda x: x[1],
reverse = True)
# join the letters back together and add to our jumbled words
jumbled.append(''.join([x[0] for x in jumbled_word]))
letters = {}

# print out the jumbled words in alphabetical order
for x in sorted(jumbled):
print x

if __name__=="__main__":
main()

此实现将使大写字母保持大写。

关于algorithm - 我应该如何按频率顺序排列字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12946794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com