直接上代码:
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int next[100];
int n;
int Next(string a)
{
int i,j;
next[0]=-1;
next[1]=0;
for(i=2;i<n;i++)
{
j=next[i-1];
while(j!=-1 && a[i-1]!=a[j])
{
j=next[j];
}
next[i]=j+1;
}
}
int main()
{
int i;
string a;
while(cin>>a)
{
n=a.size();
//cout<<n<<endl;
Next(a);
for(i=0;i<n-1;i++)
cout<<next[i]+1<<" ";
cout<<next[i]+1<<endl;
}
return 0;
}