【问题标题】:Implement basic autocomplete in Java在 Java 中实现基本的自动完成
【发布时间】:2023-03-08 02:46:01
【问题描述】:

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

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

例如:

wordbank = ["bang", "base", "bore", "band", "This is a baffling problem];

key = "ba";

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

我用 Trie 来做,但想知道 this is a good solution?

要运行,只需在终端中输入java Test。链接里的测试用例和这里的例子不一样。

【问题讨论】:

    标签: java autocomplete trie


    【解决方案1】:

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

    这个解决方案在insertWordgetWordsWithPrefix上增加了一行,同时完全去掉了buildWords的需要。

    【讨论】:

    • 那会不会显着降低空间复杂度?这意味着一遍又一遍地保存同一个词。
    • 节点将只包含对自动完成字符串的引用,不包含字符串本身。并且该词的引用次数与其长度相同。因此总内存使用量将与所有单词的总长度成正比,即与现有解决方案渐近相同。
    猜你喜欢
    • 2013-01-28
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    • 2017-09-18
    • 2018-04-23
    • 2012-01-03
    相关资源
    最近更新 更多