題目描述:
題意:
思路:
參考代碼:
#include <bits/stdc++.h>
using namespace std;
const int N=1e6+10;
#define
#define
int nxt[N],len=0;
void get_next(string p) {
int j = 0, k = -1;
nxt[0] = -1;
while (j < len)
if (k == -1 || p[j] == p[k])
nxt[++j] = ++k;
else
k = nxt[k];
}
int main() {
string a,b;
IOS;
while (cin>>a>>b){
int lena=a.size(),lenb=b.size();
a=a+b;
len=lena+lenb;
get_next(a);
int j=len;
while (nxt[j]>lena||nxt[j]>lenb)j=nxt[j];
for(int i=0;i<nxt[j];i++)cout<<a[i];
if (nxt[j]>0)cout<<" "<<nxt[j]<<end;
else cout<<"0"<<end;
}
return 0;
}