j 0 1 2 3 4 5 6 7
P a b a a b c a c
next(j)-1 0 0 1 1 2 0 1
第一趟:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
目标 a c a b a a b a a b c a c a a b c
O X
模式 a b a a b c a c
第一趟在posT=1,posP=1的地方失败,因为next[posP]=next[1]==0!=-1,所以下一趟posT不变,posP=next[posP]=0.
第二趟:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
目标 a c a b a a b a a b c a c a a b c
X
模式 a b a a b c a c
第二趟在posT=1,posP=0的地方失败,因为next[posP]=next[0]==-1,所以下一趟posT++,posP=0.第三趟:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
目标 a c a b a a b a a b c a c a a b c
O O O O O X
模式 a b a a b c a c
第三趟在posT=7,posP=5的地方失败,因为next[posP]=next[5]==2!=-1,所以下一趟posT不变,posP=next[posP]=2.第四趟:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
目标 a c a b a a b a a b c a c a a b c
O O O O O O
模式 a b a a b c a c
第四趟在posT=12,posP=7的地方成功。