在 cpp 自己的版本中对字符串进行哈希处理

Hashing string in cpp own version

本文关键字:哈希 处理 字符串 cpp 自己的 版本      更新时间:2023-10-16

我必须在 c++ 中实现一个字符串哈希函数 在 int 的情况下,它并不难,但是在没有外部库的字符串的情况下如何做到这一点?

我建议为字符串使用一个简单的哈希函数,方法是考虑每个字符的 ASCII 值。因此,请按照以下步骤获取哈希值。

  1. 计算与字符串字符对应的所有 ASCII 值的总和。
  2. hash_value = 总和%N

其中 N = 哈希表的大小

有很多哈希算法。如果你想要一个简单,不太高质量的,使用djb2(从这里(:

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的很多算法。