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; } } }
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; }