《python算法与数据结构2000讲》0642. 设计搜索自动补全系统
- 标签:设计、字典树、字符串、数据流
- 难度:困难
题目大意
要求:设计一个搜索自动补全系统。用户会输入一条语句(最少包含一个字母,以特殊字符 #
结尾)。除 #
以外用户输入的每个字符,返回历史中热度前三并以当前输入部分为前缀的句子。下面是详细规则:
- 一条句子的热度定义为历史上用户输入这个句子的总次数。
- 返回前三的句子需要按照热度从高到低排序(第一个是最热门的)。如果有多条热度相同的句子,请按照 ASCII 码的顺序输出(ASCII 码越小排名越前)。
- 如果满足条件的句子个数少于 3,将它们全部输出。
- 如果输入了特殊字符,意味着句子结束了,请返回一个空集合。
你的工作是实现以下功能:
-
构造函数:
AutocompleteSystem(String[] sentences, int[] times):
- 输入历史数据。
sentences
是之前输入过的所有句子,times
- 输入历史数据。