Пример #1
0
int main()
{
	char *s = "goodgoogle";
	char *t = "google";
	//int result = index_BF(s,t,5);
	int result = index_KMP(s,t,0);
	printf("%d\n",result);
	return 0;
}
Пример #2
0
void main()
{
    int n;
    get_next(t,next);
    n=index_KMP(s,t,pos);
    if(n!=0)
        printf("\n模式串 t 在主串 s 中第 %d 个位置之后。\n\n",n);
    else
        printf("\n主串中不存在与模式串相匹配的子串!\n\n");
}
Пример #3
0
int main()

{
	int n,n_common,n2;

	char s[20] = "adjfskjfskdjsfkglsi";

	char t[5] = "skdj";
	
	PSString ps, pt;
	//(1)
	create(s, ps);		

	create(t, pt);

	//(2)
	n_common = index_common(ps, pt);

	int next[Maxsize],nextval[Maxsize];


	printf("普通匹配情况下:\n");
	print_result(n_common);
	//(3)
	get_next(pt, next);

	
	
	
	//(4)
	n = index_KMP(ps, pt, next);
	
	printf("\n\nKMP匹配情况下:\n");
	
	print_result(n);
	
	for (int i = 0; i < 5; i++)
		printf("next[%d] = %d \n", i, next[i]);
	//(5)
	n2 = index_KMP2(ps, pt, nextval);

	printf("\n\nKMP修正版匹配情况下:\n");
	
	print_result(n2);

	for (int i = 0; i < 5; i++)
		printf("nextval[%d] = %d \n", i, nextval[i]);
	return 0;
}