KMP模式匹配算法改进
作者:互联网
看这篇文章的前提是你已经了解过KMP模式匹配算法。针对KMP模式匹配算法中存在的无意义匹配进行优化。
代码参考《大话数据结构》第五章第七节143页。
/*改进KMP模式算法*/
/*求模式串T的next函数修正值并存入数组nextval*/
void get_nextval(char* T, int* nextval)
{
int i, j;
i = 1;
j = 0;
nextval[1] = 0;
while (i < T[0])/*此处T[0]表示串T的长度*/
{
if (j == 0 || T[i] == T[j])/*T[i]表示后缀的单个字符*/
/*T[j]表示前缀的单个字符*/
{
++i;
++j;
if (T[i] != T[j])/*判断,当前字符与前缀字符不同,*/
/*T[j]表示前缀的单个字符*/
nextval[i] = j;
else
nextval[i] = nextval[j];/*字符的nextval值赋给nextval在i位置的值*/
}
else
j = nextval[j];/*若字符不同,则j值回溯*/
}
}
标签:字符,前缀,nextval,算法,KMP,模式匹配 来源: https://blog.csdn.net/weixin_46137432/article/details/121612867