コード例 #1
0
ファイル: search.c プロジェクト: wy91092/svn
int kmp_search(char *src, char *par)
{
    int i,j;
	int src_len=strlen(src);
	int par_len=strlen(par);
	int *next = (int *)malloc(strlen(par)*4);
	memset(next, 0, strlen(par)*4);
	kmp_next(par,next);
    i=0;
	j=0;
	while(i<src_len&&j<par_len)
	{
	    if(j==-1 || src[i]==par[j])
		{
		   i++;
		   j++;
		}
		else
		{
		   j=next[j];
		}
		free(next);
		if(j>=par_len)
		{
		  return 1;
		}
		else
		{
		   return 0;
		}
	
	}
}
コード例 #2
0
ファイル: 3670.cpp プロジェクト: miskcoo/oicode
int main()
{
	int n;
	std::scanf("%d", &n);
	while(n --> 0)
	{
		std::scanf("%s", str + 1);
		kmp_next();
		std::printf("%lld\n", calc());
	}
	return 0;
}