使用哈希表的字符串的良好REHASH函数?

时间:2015-04-21 14:23:53

标签: c++ string hash

我在互联网上找到的大多数散列函数总是使用整数作为它们的参数之一以及散列表大小和我遇到的最简单的重新散列函数是这样的:

int rehash(int item, int tableSize) {
    return hash(item+1,tableSize);
}

和通常使用的哈希函数是:

int hash(int item, int tableSize) {
    return item % tableSize;
}

我想知道他们是否是相当于此的字符串?

我的哈希函数:

int hash(string& item, int n) {
    int hashVal = 0;
    int len = item.length();

    for(int i = 0; i < len; i++)
    hashVal = hashVal*37 + item[i];

    hashVal %= n;   

    if(hashVal < 0) hashVal += n;

    return hashVal;
}

0 个答案:

没有答案