【问题标题】:Given a prefix, return top N searched words with this prefix给定一个前缀,返回带有该前缀的前 N ​​个搜索词
【发布时间】:2020-08-18 22:57:27
【问题描述】:

我在一次采访中被问到这个问题。问题是谷歌搜索自动完成建议。

给定一个前缀,该函数应该返回具有该前缀的前 N ​​个(常量)搜索词,即过去搜索次数最多的 N 个词,从曾经搜索过的所有具有该前缀的词中选择。

例如:对于前缀“ab”,N=3,所有搜索到的带有这个前缀的词都是:

  • abc - 1次
  • abcd - 1 次
  • abcde - 5 次
  • abgh - 6 次
  • abnm - 3 次

函数应该返回 abcde,abgh,abnm。

我想到了 trie 树,但很难从中获得搜索量最高的词。

【问题讨论】:

  • 没有语言标签?或者你只需​​要一个算法?

标签: string data-structures autocomplete prefix trie


【解决方案1】:

您的想法是正确的,但是除了 Trie 之外,您还应该使用另一种数据结构(如堆)来存储单词的频率/计数。因此,使用 trie 可以识别单词并使用 heap 拉出顶部 N。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-09
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多