- 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 等供参考。