散列函数不严格依赖于字符串键的大小

Sir*_*III 1 c++ string hash hash-function hashtable

我正在制作一个哈希表,我需要创建一个不仅依赖于字符串键大小的哈希函数,因为周期表元素只有1到3个字符.我如何创建一个哈希函数,给我一个索引,可能基于字符串的每个字符的字节?

tem*_*def 5

几乎每个字符串上的哈希函数都会对字符进行哈希处理 很难看到字符串纯粹按其长度进行散列.

一个简单的散列函数系列是shift-add-XOR,顾名思义,它使用位移,加法和异或的组合来从字符串中获取散列函数.它易于实现,并提供了相当好的密钥分发.

也就是说,如果您确保只使用周期表符号,则可能需要尝试为元素找到完美的哈希函数.这是为您正在使用的数据集定制的哈希函数,从不会发生任何冲突.类似的工具gperf可用于创建此类功能.

希望这可以帮助!