#include <stdio.h> #include <string.h> void getnext(char str[],int next[]) { next[0] = -1; int i=0; int j=-1; while (i<strlen(str)) { if (j==-1||str[i]==str[j]) { i++; j++; next[i] = j; } else { j=next[j]; } } } int main() { char yuan[30] = "asfsdfsfabaabcacasdf"; char str[30] = "abaabcac"; int next[30]; getnext(str, next); int i=0; int j=0; while (i<strlen(yuan)) { if (j!=-1&&j >= strlen(str)) break; if (j==-1||yuan[i] == str[j]) { i++; j++; } else { j = next[j]; } } return 0; }