KMP算法的next函数求解和分析过程
转自 wang0606120221 :http://blog.csdn.net/wang0606120221/article/details/7402688 假设KMP算法中的模式串为P,主串为S,那么该算法中的核心是计算出模式串的P的next函数。 KMP算法是在已知的模式串的next函数值的基础上进行匹配的。 由于本次只讨论next的求值过程,因此KMP算法的数学推理过程这里不再讲解。 从KMP算法的数学推理可知,此next函数只取决与模式匹配串自身的特点和主串没有任何关系,此函数 默认认为next[1]=0,由于next[j]=k表示的意义是当模式串和主串的第j个字符不匹配时,那么接下来和主串的第j个 字符匹配的字符是模式串的第k个字符。因此,next[1]=0表示当主串的当前字符和模式串的第1个字符不匹配,接 下来需要用模式串的第0个字符和主串的当前字符匹配,由于模式串下标是从1开始的,所以不可能存在第0个字符, 即接下的匹配动作是主串和模式串同时向右移动一位,继续模式匹配。 例如:主串:a c a b a a b a a b n a c 模式串:a b a a b 主串:a c a b a a b a a b n a c 模式串: a b a a b 主串:a c a b a a b a a b n a c 模式串: a b a a b 此时,主串和模式串不匹配