我必须在C ++中实现字符串哈希函数 如果是int,它并不难,但是如果是没有外部库的字符串,该怎么办呢?
答案 0 :(得分:0)
有很多哈希算法。如果您想要一个简单但质量不太高的产品,请使用djb2(来自here):
unsigned long
hash(unsigned char *str)
{
unsigned long hash = 5381;
int c;
while (c = *str++)
hash = ((hash << 5) + hash) + c; /* hash * 33 + c */
return hash;
}
如果您想要更好的算法,请查看smhasher以获得很多算法。
答案 1 :(得分:0)
我为字符串建议的一个简单哈希函数是考虑每个字符的ASCII值。因此,请按照以下步骤获取哈希值。
其中N =哈希表的大小