• 12
  • 2月

在做字符串比较的时候,如果字符串数量庞大,我们会利用Hash函数来进行加速。

目前,最强大,最易用的字符串哈希函数应该是BKDRHash了吧。

BKDRHash函数的C语言原型如下:
unsigned int BKDRHash(char *str)<br />
{<br />
    unsigned int seed = 131; // 31 131 1313 13131 131313 etc..<br />
    unsigned int hash = 0;<br />
<br />
    while (*str)<br />
    {<br />
        hash = hash * seed + (*str++);<br />
    }<br />
<br />
    return (hash & 0x7FFFFFFF);<br />
}


另外,除了BKDRHash函数外,还有:
APHash DJBHash JSHash RSHash SDBMHash 等供参考。