題目:
在字元串的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。