KMP算法的部分匹配值的计算

举例说明:

字符串为                    ABCDABD

部分匹配值  0 0 0 0 1 2 0

1、A                完全前缀:{空}                                                        完全后缀:{空}                                                               部分匹配值为    0

2、AB             完全前缀:{A}                                                         完全后缀:{B}     没有公共部分,所以公共部分的长度为  部分匹配值为   0

3、ABC           完全前缀:{AB,A}                                                   完全后缀:{BC,C}                                                          部分匹配值为   0

4、ABCD         完全前缀:{ABC,AB,A}                                           完全后缀:{BCD,CD,D}                                                 部分匹配值为   0

5、ABCDA      完全前缀:{ABCD,ABC,AB,A}                                完全后缀:{BCDA,CDA,DA,A}                                       部分匹配值为   1

6、ABCDAB    完全前缀:{ABCDA,ABCD,ABC,AB,A}                  完全后缀:{BCDAB,CDAB,DAB,AB,B}                          部分匹配值为  2

7、ABCDABD  完全前缀:{ABCDAB,ABCDA,ABCD,ABC,AB,A}  完全后缀:{BCDABD,CDABD,DABD,ABD,BD,D}          部分匹配值为  0

*********************************************************----------------------------------------------------------------------------------******************************************************

说明:部分匹配值就是看完全前缀和完全后缀的公共部分的长度的最大值

你可能感兴趣的:(算法,字符串匹配)