KMP算法求串aaabaaaba的next数组
时间: 2023-11-25 11:49:31 浏览: 42
下面是串aaabaaaba的next数组的求解过程:
1. 首先,next=-1,next=0,因为长度为1的字符串没有真前缀和真后缀。
2. 接下来,我们从i=2开始,依次求解next[i]。由于前面已经求出了next=0,所以我们可以利用next来求解next。此时,模式串为aa,前缀为a,后缀为a,它们相等,所以next=1。
3. 继续求解next。此时,模式串为aaa,前缀为a、aa,后缀为a、aa,它们都不相等,所以next=0。
4. 接下来,我们可以利用next来求解next。此时,模式串为aaab,前缀为a、aa、aaa,后缀为b、ab、aab,它们都不相等,所以next=0。
5. 继续求解next。此时,模式串为aaaba,前缀为a、aa、aaa、aaab,后缀为a、ba、aba、aaba,它们都不相等,所以next=1。
6. 接下来,我们可以利用next[5]来求解next。此时,模式串为aaabaa,前缀为a、aa、aaa、aaab、aaaba,后缀为a、aa、baa、abaa、aabaa,它们都不相等,所以next=1。
7. 继续求解next。此时,模式串为aaabaaa,前缀为a、aa、aaa、aaab、aaaba、aaabaa,后缀为a、aa、aaa、baaa、abaaa、aabaaa,它们都不相等,所以next=2。
8. 最后,我们可以利用next来求解next[8]。此时,模式串为aaabaaab,前缀为a、aa、aaa、aaab、aaaba、aaabaa、aaabaaa,后缀为b、ab、aab、baab、abaab、aabaaab,它们都不相等,所以next=0。
因此,串aaabaaaba的next数组为[-1, 0, 1, 0, 0, 1, 1, 2, 0]。