给定一部只有数字键盘的手机,我们需要以一种可以快速搜索的方式存储联系人。
用户将输入数字,我们必须显示地址簿中以与这些数字对应的字母开头的所有联系人。
我在一次采访中被问到这个问题,我建议创建一个 trie。对于地址簿中的每个名字,我建议在 trie 中添加相应的数字。
因此,如果通讯录中有以下联系人:
bob
boby
mat
mav
我会使用相应的数字创建尝试。在这种情况下,trie 将包含:
262 (At the 2nd node 2, keep a pointer to bob)
2629 (At the node 9, keep a pointer to boby)
628 (At the node 8, keep 2 pointers, one to each of mat & mav)
有没有更好的方法?
更新:此 trie 用于此处描述的 T9 技术中T9 类型字典背后的数据结构