针对字符串查找使用的算法。
使用一个哈希函数记录字符串,假设要查找的字符串的长度为m+1,则通常是,VALUE是常量,一般取31能够获得良好性能。
实际应用上使用滚动哈希函数,,拥有最高级数,取模是为了保证不会大小超限,BASE一般取1e6。
滚动操作:abc->bcd
即 abcd-a=bcd
即 hash(abcd)=( hash(abc)*VALUE+d )%BASE
则 ,注意这个时候hash(bcd)可能为负值,加上BASE转化为正值。
针对字符串查找使用的算法。
使用一个哈希函数记录字符串,假设要查找的字符串的长度为m+1,则通常是,VALUE是常量,一般取31能够获得良好性能。
实际应用上使用滚动哈希函数,,拥有最高级数,取模是为了保证不会大小超限,BASE一般取1e6。
滚动操作:abc->bcd
即 abcd-a=bcd
即 hash(abcd)=( hash(abc)*VALUE+d )%BASE
则 ,注意这个时候hash(bcd)可能为负值,加上BASE转化为正值。