Tag: hash hash

在这种情况下是否可以制作最小的完美哈希函数?

我想创建一个哈希映射(或其他结构,如果你有任何建议)来存储键值对。 在创建地图的同时,所有键都将同时插入,但在运行时,我需要创建地图时,我不知道键是什么(任意长度的字符串)。 我正在解析一个像这样的查询字符串”x=100&name=bob&color=red&y=150″ (但字符串可以有无限数量的变量,变量可以有任意长度的名称)。 我想解析它一次并创建一个哈希映射,最好是最小的并具有完美的哈希函数以满足线性存储要求。 一旦创建了地图,就不会修改或删除这些值,也不会再向地图添加任何键值对,因此整个地图实际上是一个常量。 我假设变量不会在字符串中出现两次(IE。 “x=1&x=2″无效)。 我在C编码,目前有一个我可以使用的函数,如get(“x”)将返回字符串”100″ ,但它每次解析查询字符串需要O(n)时间。 我想在它第一次加载时解析它,因为它是一个非常大的查询字符串,每个值都会被读取几次。 即使我使用C ,我也不需要C中的代码作为答案。 伪代码或任何建议都很棒!