• 周二. 10 月 8th, 2024

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

字符串哈希

admin

11 月 28, 2021

(水)
一般来说,我们使用BKDRhash还进行字符串的哈希操作。
具体地,我们将字符串看成一个大进制数,然后取模就行了。
code:

int hash(string s)
{
    int ans=0,l=s.length();
    for(int i=0;i<l;i++)ans=(ans*base%mod+(s[i]-'0'+1))%mod;
    return ans;
}

然后就没了。
当然单哈希人品不好时会出冲突,这个时候就需要使用双哈希,取两个不同的模数。
其他部分一模一样。
code:

int hash1(string s)
{
    int ans=0,l=s.length();
    for(int i=0;i<l;i++)ans=(ans*base%mod1+(s[i]-'0'+1))%mod1;
    return ans;
}
int hash2(string s)
{
    int ans=0,l=s.length();
    for(int i=0;i<l;i++)ans=(ans*base%mod2+(s[i]-'0'+1))%mod2;
    return ans;
}

发表回复