#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 100005
using namespace std;
char s[maxn];
int sa[maxn],t[maxn],t2[maxn],c[maxn],Rank[maxn],height[maxn],n;
void build_sa(int m){
int i,*x=t,*y=t2,*T,p ;
n++;
for(i=0;i<m;++i)c[i]=0;
for(i=0;i<n;++i)++c[x[i]=s[i]];
for(i=1;i<m;++i)c[i]+=c[i-1];
for(i=n-1;i>=0;--i)sa[--c[x[i]]]=i;
for(int k=1;k<=n;k<<=1)
{
p=0;
for(i=n-1;i>=n-k;--i)y[p++]=i;
for(i=0;i<n;++i)if(sa[i]>=k)y[p++]=sa[i]-k;
for(i=0;i<m;++i)c[i]=0;
for(i=0;i<n;++i)++c[x[y[i]]];
for(i=1;i<m;++i)c[i]+=c[i-1];
for(i=n-1;i>=0;--i)sa[--c[x[y[i]]]]=y[i];
swap(x,y);
x[sa[0]]=0;p=1;
for(i=1;i<n;++i)
x[sa[i]]=y[sa[i-1]]==y[sa[i]]&&y[sa[i-1]+k]==y[sa[i]+k]?p-1:p++;
if(p>=n)break;
m=p;
}
n--;
for(int i=1;i<=n;++i)printf("%d ",sa[i]+1);
printf("\n");
}
void LCP(){
int i,j,k=0;
for(i=1;i<=n;i++)Rank[sa[i]]=i;
for(int i=0;i<n;++i)
{
j=sa[Rank[i]-1];//h[i-1]
if(k)k--;
while(s[i+k]==s[j+k])k++;
height[Rank[i]]=k;//h[i]
}
for(int i=2;i<=n;++i)printf("%d ",height[i]);
}
int main(){
scanf("%s",s);
n=strlen(s);
build_sa(256);
LCP();
return 0;
}
后綴數(shù)組
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門娘荡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人驶沼,你說我怎么就攤上這事炮沐。” “怎么了商乎?”我有些...
- 文/不壞的土叔 我叫張陵央拖,是天一觀的道長。 經(jīng)常有香客問我鹉戚,道長鲜戒,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任抹凳,我火速辦了婚禮遏餐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘赢底。我一直安慰自己失都,他們只是感情好,可當(dāng)我...
- 文/花漫 我一把揭開白布幸冻。 她就那樣靜靜地躺著粹庞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪洽损。 梳的紋絲不亂的頭發(fā)上庞溜,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼驾荣!你這毒婦竟也來了外构?” 一聲冷哼從身側(cè)響起,我...
- 正文 年R本政府宣布走净,位于F島的核電站,受9級特大地震影響孤里,放射性物質(zhì)發(fā)生泄漏伏伯。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一捌袜、第九天 我趴在偏房一處隱蔽的房頂上張望说搅。 院中可真熱鬧,春花似錦虏等、人聲如沸弄唧。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽候引。三九已至,卻和暖如春敦跌,著一層夾襖步出監(jiān)牢的瞬間澄干,已是汗流浹背。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- http://www.cnblogs.com/staginner/archive/2012/02/03/23374...
- http://poj.org/problem?id=1743 先二分答案,把題目變成判定性問題:判斷是否存在兩個長...
- Openjudge原題鏈接 題意輸入一個長度N(<=20000)的數(shù)組静檬,求出其重復(fù)K次的最長可重疊子串 思路由于N...
- 給定一個字符串,求不相同的子串的個數(shù)。算法分析:每個子串一定是某個后綴的前綴,那么原問題等價于求所有后綴之間的不相...
- 先%羅DADA建議按照論文手推,更易明白再%kuangbin大神 1嘲碧、什么是后綴數(shù)組 后綴數(shù)組是后綴樹的替代品稻励,十...