clinton homer riemann marjorie
0 rie 3
#include <stdio.h>
#include <string.h>
#define maxn 50002
char str1[maxn << 1], str2[maxn];
int ans, next[maxn << 1], len2;
void getNext()
{
int i = 0, j = -1;
next[0] = -1;
while(str1[i]){
if(j == -1 || str1[i] == str1[j]){
++i; ++j;
next[i] = j;
}else j = next[j];
}
str1[ans = next[i]] = '\0';
}
int main()
{
//freopen("stdin.txt", "r", stdin);
while(scanf("%s%s", str1, str2) == 2){
strcat(str1, " ");
strcat(str1, str2); getNext();
ans ? printf("%s %d\n", str1, ans) : printf("0\n");
}
}
#include <stdio.h>
#define maxn 50002
char str1[maxn], str2[maxn] = {' '};
int ans, next[maxn];
void getNext()
{
int i = 0, j = -1;
next[0] = -1;
while(str2[i]){
if(j == -1 || str2[i] == str1[j]){
++i; ++j;
next[i] = j;
}else j = next[j];
}
str1[ans = next[i]] = '\0';
}
int main()
{
//freopen("stdin.txt", "r", stdin);
while(scanf("%s%s", str1, str2 + 1) == 2){
getNext();
ans ? printf("%s %d\n", str1, ans) : printf("0\n");
}
}
#include <stdio.h>
#define maxn 50002
char str1[maxn], str2[maxn] = {' ', ' '};
int ans, next[maxn];
void getNext()
{
int i = 0, j = -1;
next[0] = -1;
while(str2[i]){
if(j == -1 || str2[i] == str1[j]){
++i; ++j;
next[i] = j;
}else j = next[j];
}
str1[ans = next[i]] = '\0';
}
int main()
{
//freopen("stdin.txt", "r", stdin);
while(scanf("%s%s", str1, str2 + 2) == 2){
getNext();
ans ? printf("%s %d\n", str1, ans) : printf("0\n");
}
}
HDU2594 Simpsons’ Hidden Talents 【KMP】,布布扣,bubuko.com
HDU2594 Simpsons’ Hidden Talents 【KMP】
原文:http://blog.csdn.net/chang_mu/article/details/37915495