Seek the Name, Seek the Fame

Posted hellohhy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Seek the Name, Seek the Fame相关的知识,希望对你有一定的参考价值。

题目描述

原题来自:POJ 2752

给定若干字符串(这些字符串总长 (leq 4 imes 10^5)),在每个字符串中求出所有既是前缀又是后缀的子串长度。

例如:ababcababababcabab,既是前缀又是后缀的:abababababcababababcababababcabab

输入格式

输入若干行,每行一个字符串。

输出格式

对于每个字符串,输出一行,包含若干个递增的整数,表示所有既是前缀又是后缀的子串长度。

样例

样例输入

ababcababababcabab
aaaaa

样例输出

2 4 9 18
1 2 3 4 5

code

#include <bits/stdc++.h>
using namespace std;
const int maxn=4e5+100;
const int base=233;
char s[maxn];
int poww[maxn],hash[maxn];
int main(){
	while(cin>>s+1){
		int len=strlen(s+1);
		poww[1]=233;
		for(int i=2;i<=len;i++)
			poww[i]=poww[i-1]*base;
		hash[1]=s[1];
		for(int i=2;i<=len;i++)
			hash[i]=hash[i-1]*base+s[i];
		for(int i=1,j;i<=len;i++){
			j=len-i+1;
			if(hash[i]-hash[0]*poww[i] == hash[len]-hash[j-1]*poww[i])
				cout<<i<<" ";
		}
		cout<<endl;
	}
}

以上是关于Seek the Name, Seek the Fame的主要内容,如果未能解决你的问题,请参考以下文章

Seek the Name, Seek the Fame

POJ2752 Seek the Name, Seek the Fame

POJ 2752 Seek the Name, Seek the Fame

poj2752 Seek the Name, Seek the Fame

POJ 2752 Seek the Name, Seek the Fame

POJ 2752 Seek the Name, Seek the Fame [kmp]