KMP算法--蛮力法--串匹配问题

KMP算法:
输入:主串S,模式T
输出:T在S中的位置
J = a b c a c
Next[j] = { -1 0 0 0 1 }

第一趟匹配 i-> 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
I=2,j=2 a b a b c a b c c a b c a c b a b
匹配失败 j-> a b c a c
i不动,j回溯到next[2],及j=0;

第二趟匹配 i-> 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
I=6,j=4 a b a b c a b c c a b c a c b a b
匹配失败 j-> a b c a c
i不动,j回溯到next[4],及j=1;
第三趟匹配 i-> 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
I=8,j=3 a b a b c a b c c a b c a c b a b
匹配失败 j-> a b c a c
i不动,j回溯到next[3],及j=1;

第四趟匹配 i-> 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
I=8,j=3 a b a b c a b c c a b c a c b a b
匹配成功 j-> a b c a c
全部字符比较完毕;

#include
#include 
void GetNext(char T[],int next[]){

	int i,j,len;
	next[0]=-1;
	for(j=1;T[j]!='\0';j++)
	{
		for(len=j-1;len>=1;len--)
		{
			for(i=0;0

运行结果:

在这里插入图片描述
时间复杂度:0(n);

你可能感兴趣的:(c++或c,算法,蛮力法)