题目:
在字符串的KMP模式匹配算法中,需要求解模式串p的next函数值,其定义如下所示。若模式串p为"aaabaaa",则其next函数值为0123123。
解析:
当j=1时 next[1]=0;
当j=2时 找不到k next[2]=1;
当j=3时 k=2 p1=p2 a=a next[3]=2;
当j=4时 k=2,3
当k=2时 p1=p3 a=a 2成立;
当k=3时 p1p2=p2p3 aa=aa 3成立;
next[4]=3;
当j=5时 k=2,3,4
当k=2时 p1!=p4 a!=b 2不成立;
当k=3时 p1p2!=p3p4 aa!=ab 3不成立;
当k=4时 p1p2p3!=p2p3p4 aaa!=aab 4不成立;
next[5]=1;
当j=6时 k=2,3,4,5
当k=2时 p1=p5 a=a 2成立;
当k=3时 p1p2!=p4p5 aa!=ba 3不成立;
当k=4时 p1p2p3!=p3p4p5 aaa!=aba 4不成立;
当k=5时 p1p2p3p4!=p2p3p4p5 aaab!=aaba 5不成立;
next[6]=2;
当j=7时 k=2,3,4,5,6
当k=2时 p1=p6 a=a 2成立;
当k=3时 p1p2=p5p6 aa=aa 3成立;
当k=4时 p1p2p3!=p4p5p6 aaa!=baa 4不成立;
当k=5时 p1p2p3p4!=p3p4p5p6 aaab!=abaa 5不成立;
当k=6时 p1p2p3p4p5!=p2p3p4p5p6 aaaba!=aabaa 6不成立;
next[7]=3;
next的函数值为0123123。