Можно ли создать минимальную идеальную хеш-функцию в этой ситуации?

Я хочу создать хэш-карту (или другую структуру, если у вас есть предложения) для хранения пары ключ-значение. Все ключи будут вставлены сразу, одновременно с созданием карты, но я не знаю, какими будут ключи (строки произвольной длины) до времени выполнения, когда мне нужно будет создать карту.

Я разбираю строку запроса вроде этой "x = 100 & name = bob & color = red & y = 150" (но строка может иметь неограниченное количество переменных, а переменные могут иметь имя любой длины).

Я хочу проанализировать его один раз и создать хеш-карту, желательно минимальную и с идеальной хеш-функцией для удовлетворения требований линейного хранения. После создания карты значения не будут изменены или удалены, к карте больше не будут добавляться пары ключ-значение, поэтому вся карта фактически является константой. Я предполагаю, что переменная не встречается дважды в строке (IE. "x = 1 & x = 2" недопустимо).

Я кодирую на C , и в настоящее время у меня есть функция, которую я могу использовать, например get ("x") , которая вернет строку "100" , но он анализирует строку запроса каждый раз, что занимает O (n) раз. Я хотел бы проанализировать его один раз при первой загрузке, поскольку это очень большая строка запроса, и каждое значение будет прочитано несколько раз.Хотя я использую C , мне не нужен код на C в качестве ответа. Псевдокод или любые предложения были бы потрясающими!

8
задан Paul 7 June 2012 в 01:45
поделиться