Example #1
0
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;
}
Example #2
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;
}
Example #3
0
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;
}
Example #4
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;
}