
考法:next和nextval的算法!!!
next[j]就是第j个元素前j-1个元素收尾重合的个数加1;
求nextval数组值的第二种方法
模式串
a
b
a
a
b
c
a
c
next值
0
1
1
2
2
3
1
2
nextval值
0
1
0
2
1
3
0
2
1.第一位的nextval值必定为0,第二位如果于第一位相同则为0,如果不同则为1。
2.第三位的next值为1,那么将第三位和第一位进行比较,均为a,相同,则,第三位的nextval值为0。
3.第四位的next值为2,那么将第四位和第二位进行比较,不同,则第四位的nextval值为其next值,为2。
4.第五位的next值为2,那么将第五位和第二位进行比较,相同,第二位的next值为1,则继续将第二位与第一位进行比较,不同,则第五位的nextval值为第二位的next值,为1。
5.第六位的next值为3,那么将第六位和第三位进行比较,不同,则第六位的nextval值为其next值,为3。
6.第七位的next值为1,那么将第七位和第一位进行比较,相同,则第七位的nextval值为0。
7.第八位的next值为2,那么将第八位和第二位进行比较,不同,则第八位的nextval值为其next值,为2。
在“aaaab”内进行验证。
模式串
a
a
a
a
b
next值
0
1
2
3
4
nextval值
0
0
0
0
4
https://blog.youkuaiyun.com/jomodimple_/article/details/78618827
本文详细解析了字符串模式匹配中next和nextval数组的计算方法。next[j]表示模式串中第j个字符开始的最大前缀和后缀长度,而nextval[j]在此基础上考虑了与前一个相同长度前缀的比较。通过举例说明,如模式串'aaaab',解释了每个位置的next和nextval值如何得出,帮助理解这一算法。
8572

被折叠的 条评论
为什么被折叠?



