#include <bits/stdc++.h>
using namespace std;
const int N = 10010;
string p;
int ne[N];
signed main()
{
cin>>p;
ne[0] = -1;
ne[1] = 0;
int i = 2, j = 0;
for (i = 2; i < p.size() + 1; i++)
{
while (j && p[i - 1] != p[j]) j = ne[j];
if (p[i - 1] == p[j]) j++;
ne[i] = j;
}
for(int k = 0 ; k < p.size(); k++)
{
cout<<ne[k]<<" ";
}
}
next数组求解
最新推荐文章于 2024-08-06 17:42:20 发布