用于大文本搜索词的哈希表。 O(1)

时间:2014-05-20 14:16:14

标签: c++ algorithm dictionary hashtable hash-collision

我必须为大文本(搜索,粘贴,删除)创建操作速度为O(1)的哈希表。 这是真的吗?如何最小化碰撞?任何例子?我以后从未使用过C ++。我找不到任何带有字典的示例哈希表 目标语言C ++(仅限STL)。

1 个答案:

答案 0 :(得分:2)

您可以使用属于unordered_map标准的unordered_setC++11,或者如果C++11不可选,则使用这些容器的boost版本。如果您需要自己实施解决方案,我相信您可以使用任一实现作为参考。

编辑:作为amit的指针,由于你需要散列一个字符串,所以它仍然不是常数,因此你需要至少遍历一次。因此,复杂性为O(|S|),其中S是要搜索的字符串。此外,复杂性是预期 O(|S|),因为无论哈希函数可能发生多么好的冲突(除非极少数情况下可以使用完美哈希,由于生日悖论而非常非常高的概率。)