问题:你有一部智能手机,你打开了联系人应用程序。你想搜索一个联系人。比方说manmohan
。但你不记得他的全名。你只记得mohan
,所以你开始打字。当你输入'm'时,联系人应用程序将开始搜索具有字母'm'的联系人。假设您在联系人列表("manmohan", "manoj", "raghav","dinesh", "aman")
中存储了姓名,现在联系人将显示manmohan,manoj and aman
。现在你输入的下一个字符是'''(直到现在你已经键入“mo”)现在结果应该是“man mo han”。你将如何实现这样的数据结构?查找与查询匹配的所有名称:如何使用后缀树?
我的方法是应用KMP,因为您在所有可用联系人中查找模式“m”,然后选择“mo”。然后显示匹配的字符串。但采访者说这不是有效的。 (我想不出有什么更好的办法。)在离开之前他说有一个算法可以帮助。如果你知道它,你可以解决它。我做不到。 (在离开之前我问了那个标准算法。访问者说:后缀树)。任何人都可以解释请问,它是如何更好?或者哪个是实现这种数据结构的最佳算法。
https://en.wikipedia.org/wiki/Suffix_tree –
相关:http://stackoverflow.com/a/17703739/56778 –