题目描述:让你在一个串中找 一个子串前缀后缀和中间都出现了该子串。
分析:显然是一道KMP的题,不过这次又忽略了next会把前面短的盖住  而wa了一发;
ac代码:
#include<bits/stdc++.h>
using namespace std;
int next1[1000003];
int vis[1000003];
int main(){
    string s;
    cin>>s;
    memset(vis,0,sizeof(vis));
    next1[0]=-1;
    next1[1]=0;
    int i=1,j=0,len=s.length();
    while(i<len){
        if(j==-1||s[i]==s[j]){next1[++i]=++j;vis[j]++;}
        else j=next1[j];
    }
    j=next1[len];
    while(j>0){
        if(vis[j]>1){cout<<s.substr(0,j)<<endl;return 0;}
        else j=next1[j],vis[j]++;
    }
    cout<<"Just a legend"<<endl;
}