java - 在 Java 中实现基本的自动完成

标签 java autocomplete trie

给定一组单词和短语,给定一个键,返回:

  • 所有以该键开头的单词
  • 包含以 key 开头的单词的所有短语

例如:

wordbank = ["bang", "base", "bore", "band", "这是一个莫名其妙的问题];

key = "ba";

autocomplete(wordbank, key) 应该返回 ["bang", "base", "band", "This is a maffling Problem]

我使用了 Trie 来做到这一点,但只是想知道是否 this is a good solution?

要运行,只需在终端中输入java Test。链接中的测试用例与此处的示例不同。

最佳答案

代码可以通过以下方式简化。将一组自动完成结果添加到尝试的每个节点。在尝试插入单词时,同时向每个访问的节点添加自动完成集。要执行自动完成,只需返回相应节点的自动完成集即可。

此解决方案向 insertWordgetWordsWithPrefix 添加一行,同时完全消除 buildWords 的需要。

关于java - 在 Java 中实现基本的自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40452718/

相关文章:

javascript - JQuery 自动完成,并在字段内提供提示

java - 如何在 java 中打印出从 trie 中找到的单词?

algorithm - 如何从中间搜索尝试

java - Hibernate 在 PostgreSQL 中使用驼峰格式的主键

java - Java中如何确定输入参数的数量

java - Android JNI - 字符串作为随机数返回

java - 记录时在其他层使用 session 数据的正确方法

autocomplete - 如何更改原子编辑器自动完成包的建议顺序/评分

JQuery 自动完成 - 如何在不使用 id 的情况下根据附近的 DOM 元素控制列表?

data-structures - 为什么 HashMap 比特里映射更好?