当您在文本框中输入字母时,它将获得以您输入的前几个字符开头的用户列表。我尝试将数据存储在哈希映射中,其中包含0到n的键每个条目的字母。例如,对于Chris,我在哈希映射中有一个带有键的条目:
Ç 章 CHR CHRI 克里斯
这在速度方面非常有效,但在内存方面效率低下。问题是:你将如何有效地实施它?由于我表示这是一个编程面试问题,适合有效实现该功能的数据结构是什么?
答案 0 :(得分:2)
将数据存储在树中而不是散列映射中。您可以在用户输入的范围内导航树,然后子树将包含他们可以输入内容的所有可能选项。
以这个示例树为例。
C
/ \
A U
/| |\
R B B L
/ \
D T
假设用户输入了C和A.这意味着图表的以下部分包含可能的自动完成建议。
C
/
A CA
/ \
R B CAR CAB
/
D CARD
它仍然可以构建一个相当广泛的结构,但它也非常有效地遍历,并且存储起来也相当有效。
答案 1 :(得分:2)
有一个类似的问题由社区回答(用户:phimuemue):Updated Fiddle
我只是从这篇文章中复制,你可以在这篇文章中找到详细信息和链接。