假如要判断字符串A“AABA”是否是字符串B“AABAACAADAABAABA”的子串 最朴素的算法是枚举B的所有长度为4的子串,然后逐个与A进行对比,这样的时间复杂度是O(mn),m为A的长度,n为B的长度. 另一个做法是用哈希函数计算出A的哈希值,然后计算出B所有长度为4的子串的哈希值,这样比较就可以判断出A是否在B中.虽然这样做的时间复杂度还是O(mn),但是为接下来的滚动哈希打下了基础. Rabin-Karp算法采用了一种叫做滚动哈希的技巧,对哈希函数的类型有要求. Rabin-Karp…