模式匹配。
kmp中next数组表示如果当前匹配不成功,匹配串移动到的位置,不考虑移动到的位置的数与当前位置数的关系。
kmp中nextval数组表示如果当前匹配不成功,匹配串移动到的位置,考虑移动到的位置的数与当前位置数的关系。
求next
while(i<len)
{
if(j==-1||str[i]==str[j])
{
i++;j++;
next[i]=j;
}
else j=next[j];
}求nextval
while(i<len)
{
if(j==-1||str[i]==str[j])
{
i++;j++;
if(str[i]!=str[j])next[i]=j;
else next[i]=next[j];
}
else j=next[j];
}本质上是相同的,不同的地方在于nextval刨根问底,利用类似与并查集的思想,寻找到如果str[i]==str[j],匹配串应该移动的位置
本文深入解析KMP算法中的next数组与nextval数组,详细说明两者在模式匹配过程中的区别与联系,以及如何通过nextval数组实现更深入的匹配逻辑。

1万+

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



