kmp算法next数组的修正
时间: 2023-11-09 09:58:26 浏览: 180
根据提供的引用内容,KMP算法中的next数组的修正可以通过求解nextval数组来实现。在KMP算法中,next数组用于记录模式串中每个位置的最长前缀子串与最长后缀子串的匹配长度。而nextval数组则是在next数组的基础上进行了修正,当位置k的元素与next[k]元素不同时,将nextval[k]的值设置为next[k]。具体实现可以参考以下代码示例:
/*CaptainUniverse_ 2022.4.14*/
void get_nextval(String T, int *nextval)//T为模式串
{
int j = 0;//前缀
int i = 1;//后缀
nextval = 0;
while(i < T)
{
if(j == 0 || S[i] == T[j])
{
i++;
j++;
if(T[i] != T[j])
{
nextval[i] = j;
}
else
{
nextval[i] = nextval[j];
}
}
else
{
j = nextval[j];
}
}
}
/*CaptainUniverse_ 2022.4.14*/
阅读全文