字符串的哈希函数

时间:2019-11-17 10:06:08

标签: c hash hashtable

我必须开发一个对三个键都适用的功能:车辆牌照编号,签发日期和姓氏。我的代码可以在issue_date和last_name上正常工作,但是会导致许可证号发生很多冲突。示例license_no L1-0015338

我是哈希函数的新手,不知道要使用哪种哈希函数。

int hash3(char* s, int max)
{
    int prime = 20000;
    char* c;
    unsigned long number, column=1, hash, i;

    for (i = hash = 0; *s; i++, s++)
    {
        column *= (*s);
        prime = nextPrime(prime);
        hash = (((hash << 5) + hash) ^ column) * prime;
    }

    return (int)((hash) % max);
}

0 个答案:

没有答案
相关问题