我有以下问题。我必须在内存中存储多种语言的唯一单词列表,当然,当我添加新单词时,我必须检查新单词是否已经存在。
当然,这需要非常快,主要是因为词汇量很大。
我正在考虑实施Suffix Tree,但我想知道是否有一些已经实现的内部结构更简单的方法。
P.S。单词数量≈10 7 。
答案 0 :(得分:2)
首先请注意,后缀树在这里可能是一种过度杀伤,因为它们允许快速搜索任何单词的后缀,这可能比你想要的要多一些。 trie是一个非常相似的DS,它也允许快速搜索单词,但由于它不支持快速搜索任何后缀 - 它的创建更简单(无论是编程还是效率)。
另一个更简单的选择是使用简单的哈希表,它在C#中实现为HashSet。虽然HashSet在最坏的情况下理论上较慢 - 每次查找的平均情况需要恒定的时间,并且它可能足以满足您的应用。
我的建议是: