编程语言
首页 > 编程语言> > KMP模式匹配算法改进

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