python - 如何考虑生成所有单词并为输入检索给定字母的最佳单词

标签 python algorithm priority-queue trie

我决定用 Python 编写一个小应用程序来帮助我学习使用 dvorak 键盘布局打字。在我的算法课上,我们讨论了树和尝试,并实现了自动完成功能。

我从 this site 中抓取了一个单词表.然后我将其中的所有单词加载到一个 trie 中(令人惊讶的是只花了大约三分之一秒),现在我正试图弄清楚如何制作相关的单词。

我目前正在维护一个优先级队列,以跟踪用户输入错误次数最多的字母,因此我从该队列中删除了 3 个字母作为开始。如果我想要以这些字母中的每一个字母开头的所有单词,我可以这样做,然后可能只是过滤掉所有没有用户输入错误次数最多的其他字母的所有单词。

是否有可能有效地(或者甚至可能不是有效地)获取所有单词的列表,其中包含优先级队列中的字母,然后过滤掉,以便我得到对打字员来说最大挑战的单词?

我能够用字符做到这一点,但单词提出了一个有趣的挑战,因为 trie 的性质只会获取前缀以队列中的字母开头的单词。

最佳答案

你需要在这里试一试吗?我认为您要么不需要任何高级结构,要么需要其他东西。

您想处理多少单词?如果只需要三分之一秒就可以将它们加载到一个特里树中,那么只需浏览所有这些并选择你想要的任何东西就不会花费太多时间。您将不得不每次都这样做,但如果只是 1/3 秒,那将不是问题。

关于python - 如何考虑生成所有单词并为输入检索给定字母的最佳单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30296063/

相关文章:

python - 从字符串列表的列表中解析元素

javascript - 了解 "global"正则表达式

java - 要列出的优先队列。添加不正确

java - 插入哨兵双向链表实现的优先级队列

python - 如何使用python转义xml属性中的特殊字符

python - 将 Python 标准 IO 暴露给子进程

python - 将负 float 转换为无符号整数

algorithm - RSS 功能问题

algorithm - 2-3棵树,数据存储

c++ - : inserting into a priority queue,或追溯排序的速度更快吗?