天天看點

Simpsons’ Hidden Talents(字首字尾比對plus

題目描述:

Simpsons’ Hidden Talents(字首字尾比對plus

題意:

思路:

參考代碼:

#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;
}