cpp自己版本中的哈希字符串

时间:2018-06-22 11:26:09

标签: c++ algorithm hash

我必须在C ++中实现字符串哈希函数 如果是int,它并不难,但是如果是没有外部库的字符串,该怎么办呢?

2 个答案:

答案 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值。因此,请按照以下步骤获取哈希值。

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

其中N =哈希表的大小