Exemple #1
0
int main()
{
	char *text = "ababababca";
	char *s = "ababca";
	char *result = NULL;
	int i;

	KMP_MATCH *pkmp = kmp_init(s, strlen(s));
	if (pkmp == NULL)
	{
		return 0;
	}


	result = kmp_match(text, strlen(text), pkmp);
	if (result)
	{
		printf("found: offset is %d\n", result-text);
	}
	else
	{
		printf("not found\n");
	}

	kmp_free(pkmp);
	return 0;
}
Exemple #2
0
int main(){
 
    int i=0,j=0;
	int tmp=0;
    char* p = "acbac";
    char* t = "acaccbabb";
	char* tmpStr =NULL;
    int plen = strlen(p);
	//i:表示截取字符串的次数
	for (i=plen;i>0;i--)
	{
		tmp=plen-i+1;
		//j表示截取和KMP匹配的次数
		for (j=0;j<tmp;j++)
		{
			tmpStr=substring(p,j,i);
			getpos=-1;
			kmp_match(t,tmpStr);
		
			if (getpos!=-1)
			{
				//输出结果,并退出程序
				printf("result:%d\n",i);
				i=0;
				break;
			}
			free(tmpStr);
		}
	}
    return 0;
}
int main (void){

	char txt[100],pat[100];
	int k;
	while(1){
		count_compare=0;
	   if (scanf("%d",&k)!=EOF) {
		   printf("%d番 入力してください\n",k);
	   }
	   else {
		   break;
	   }

	   printf("txt=");
	   scanf("%s",txt);
	   printf("pattern=");
	   scanf("%s",pat);

	   int i=kmp_match(txt,pat);

	   printf("\n比較回数 = %d i = %d文字めに見つかりました\n",count_compare,i);
	   getchar();
	}

    return 0;
}
Exemple #4
0
int main() {
    char s[100], p[100];
    while(scanf("%s%s", &s, &p) != EOF){
        kmp_match(s, strlen(s), p, strlen(p));
    }
    return 0;
}
Exemple #5
0
int main()
{
  char t[]="chinese medimedicine college";
  char p[]="medimedicine";
  int i;
  faillink(p,flink,strlen(p));
  
  for(i=0;i<strlen(p);i++)
    printf("flink[%d]=%d\n",i,flink[i]);

  printf("%d\n",kmp_match(t,p,flink,strlen(t),strlen(p)));
  
  return 0;
}
Exemple #6
0
int main()
{
	char p[20];
	char t[50];
	printf("input target:\n");
	gets(t);
	printf("input pattern:\n");
	gets(p);
	int *next = (char*)malloc(strlen(p)*sizeof(int));
	makeNext(p, next);
	printf("the 'next' arg:");
	for (int i = 0;i < strlen(p);i++)
	{
		printf("%d ", next[i]);
	}
	printf("\n");
	kmp_match(t, p, next);
	system("pause");
	return 0;

}
Exemple #7
0
int main() {
    int n,m,i,j,k,pLen,len,flag;
    scanf("%d", &n);
    while(n--){
        scanf("%d", &m);
        for(i = 0;i <m;i++){
            scanf("%s",&str[i]);
        }
        ans[0] = '\0';
        flag = 0;
        pLen = strlen(str[0]);
        for(len = pLen;len>=3;len--){
            for(i = 0;i <=pLen-len;i++){
                for(k = 0,j = i;j <i+len;j++){
                    p[k++] = str[0][j];
                }
                p[k] = '\0';
                for(k=1;k<m;k++){
                    if(kmp_match(str[k],strlen(str[k]),p,strlen(p),next)==0) break;
                }
                if(k==m){
                    flag = 1;
                    if(strlen(ans)==strlen(p) && strcmp(ans,p) > 0){
                        strcpy(ans,p);
                    }  
                    if(strlen(ans) < strlen(p)){
                        strcpy(ans,p);
                    }
                }
            }
           if(flag == 1) break;
        }
        if(ans[0] == '\0') printf("no significant commonalities\n");
        else printf("%s\n",ans);
    }
    return 0;
}