Можно ли сделать в этой ситуации минимально совершенную хэш-функцию?
Я хочу создать Hash Map (или другую структуру, если у вас есть предложения) для хранения пар ключ-значение. Все ключи будут вставлены одновременно с созданием карты, но я не знаю, какими будут ключи (строки произвольной длины) до времени выполнения, когда мне нужно будет создать карту.
Я анализирую строку запроса, как это"x=100&name=bob&color=red&y=150"
(но строка может иметь неограниченное количество переменных, а переменные могут иметь любое имя длины).
Я хочу проанализировать его один раз и создать хэш-карту, желательно минимальную и с идеальной хэш-функцией для удовлетворения требований линейного хранения. Как только карта будет создана, значения не будут изменены или удалены, пары ключей-значений больше не будут добавлены на карту, поэтому вся карта фактически является константой. Я предполагаю, что переменная не встречается дважды в строке (IE."x=1&x=2"
не является действительным).
Я кодирую вC
и в настоящее время есть функция, которую я могу использовать какget("x")
который вернет строку"100"
, но каждый раз анализирует строку запросаO(n)
время. Я хотел бы проанализировать его один раз при первой загрузке, поскольку это очень большая строка запроса и каждое значение будет прочитано несколько раз. Хотя я используюC
Мне не нужен код вC
как ответ. Псевдокод или любые предложения вообще были бы офигенными!