Хеш-таблица для поиска слов в большом тексте. O(1)
Я должен создать хеш-таблицу со скоростью операции O(1) для большого текста (поиск, вставка, удаление). Это реально? Как минимизировать столкновения? Любой пример? Я никогда не использовал C++ позже. Я не могу найти пример хэш-таблицы со словарем для текста.
Целевой язык C++ (только STL).
1 ответ
Вы можете использовать unordered_map
или же unordered_set
которые являются частью C++11
стандартный, или используйте версию этих контейнеров Boost, если C++11
это не вариант. Если вам нужно реализовать решение самостоятельно, я полагаю, что вы можете использовать реализацию в качестве справочного материала.
РЕДАКТИРОВАТЬ: как указатель на amit, он все еще не является константой, так как вам нужно хешировать строку, поэтому вам нужно пройти ее хотя бы один раз. Таким образом, сложность O(|S|)
где S
строка ищется Также ожидается сложностьO(|S|)
независимо от того, насколько хороши могут возникнуть коллизии хеш-функций (и, за исключением очень редкого случая, когда можно использовать идеальный хеш, это произойдет с очень, очень высокой вероятностью из-за парадокса дня рождения).