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; }
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; }
int main() { char s[100], p[100]; while(scanf("%s%s", &s, &p) != EOF){ kmp_match(s, strlen(s), p, strlen(p)); } return 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; }
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; }
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; }