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
,既是前缀又是后缀的:ab
,abab
,ababcabab
,ababcababababcabab
。
输入格式
输入若干行,每行一个字符串。
输出格式
对于每个字符串,输出一行,包含若干个递增的整数,表示所有既是前缀又是后缀的子串长度。
样例
样例输入
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的主要内容,如果未能解决你的问题,请参考以下文章
POJ2752 Seek the Name, Seek the Fame
POJ 2752 Seek the Name, Seek the Fame
poj2752 Seek the Name, Seek the Fame