设计牛津英语词典

时间:2011-12-10 00:57:22

标签: java algorithm data-structures

我在接受采访时被问及如何设计牛津英语词典。

我告诉他我使用的是TREE数据结构,但他回答说需要大量内存。那么应该使用哪种其他数据结构?

3 个答案:

答案 0 :(得分:8)

我听过的一个数据结构在过去用于存储T9字典的移动电话中使用了以下内容(嗯,这只解决了关键问题,而不是定义存储):

对条目进行排序,每个条目应以从上一个条目开始的偏移量开始,并从中继续。例如:

apple
4icable
7tion

将解码为苹果,适用,应用程序。但是,这可能与合并链的尝试没有什么不同,请参阅

appl -> e 
     -> ica -> ble
            -> tion

维基百科发现了Directed acyclic word graph,它与树不同,它不仅分支,而且分支可以合并,其中单词具有相同的后缀。这确实可能是一个优越的存储空间。

        a
       / \
  pplic   utom
       \ /
      ation

答案 1 :(得分:0)

它不会占用大量内存。你的回答很好。也许在1995年。认为自己很幸运。

答案 2 :(得分:0)

正如其他人所提到的,如果没有足够的屋顶来设计精心设计的特里,那么任何其他类型的索引都可能没有空间。由于这是一个面试问题,听起来他正试图引导你走向经典的核心数据结构,如B树。

或者,一个好的回应可能是要求更多的信息,比如“你想对这个数据结构做什么样的操作,你需要什么样的性能?”如果你只想要一个拼写检查,那么Bloom过滤器可能是最有效的“数据结构”......