//============================================================================
// Name : POJ_2752.cpp
// Author : tiger
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
int ans[400002];
int next[400002];
char s[400002];
int get_next(char *s,int len,int *next)
{
int i,j = 0,k = 0;
//next[0] = 0;
next[1] = 0;
for(i = 1; i <= len;)
{
if(j ==0 || s[i] == s[j])
{
i++;j++;
next[i] = j;
}
else
{
if(i == len)
{
ans[k++] = j-1;
}
j = next[j];
}
}
return k;
}
int main() {
int i,len,k;
freopen("in","r",stdin);
while(scanf("%s",s+1) != EOF)
{
len = strlen(s+1);
len++;
s[len] = '*';
k = get_next(s,len,next);
for(i = k-2; i >=0 ;i--)
printf("%d ",ans[i]);
printf("%d/n",len-1);
}
return 0;
}
POJ_2752_KMP-next数组的应用
最新推荐文章于 2019-02-28 15:06:05 发布