int main() { int nCase; char ch; long long a, b, ans; scanf("%d", &nCase); while (nCase--) { ans = 0; scanf("%s", s); scanf("%s", t); for (int i = 1; t[i]; ++i) { ch = t[i]; t[i] = 0; make_next(t, next[0]); if (NULL == kmp_strstr(s, t, next[0])) continue; t[i] = ch; make_next(t+i, next[1]); if (NULL == kmp_strstr(s, t, next[1])) continue; ch = t[i]; t[i] = 0; a = kmp_str_count(s, t, next[0]); t[i] = ch; b = kmp_str_count(s, t+1, next[1]); ans += a * b; } printf("%lld\n", ans); } return 0; }
int main(int argc, char **argv) { std::cout << argv[1] << ":" << argv[2] << std::endl; char *find = kmp_strstr(argv[1], argv[2]); assert(strstr(argv[1], argv[2]) == find); std::cout << find << std::endl; }
int main(int argc, char **argv) { char t[] = "abcababababdcdeababc"; char p[] = "aba"; printf("vio_strstr: %d\n", vio_strstr(t, p)); printf("kmp_strstr: %d\n", kmp_strstr(t, p)); vio_strall(t, p); kmp_strall(t, p); return 0; }
int main() { char s[] = "Search Internet VagaaVagaa!"; char t[] = "VagaaVagaa"; char* ptr; printf("%s %s\n", s, t); ptr = kmp_strstr(s, t); for (int i = 0; t[i]; i++) { printf("%d ", next[i]); } printf("\n"); puts(ptr); return 0; }