*【bzoj 1355】Radio Transmission(kmp)

来源:互联网 发布:16年淘宝卖零食要证吗 编辑:程序博客网 时间:2024/05/17 01:24

传送门biu~
kmp算法中nex数组指向最长后缀,那么最短循环节一定就是n-nex[n]。

#include<bits/stdc++.h>using namespace std;int n;string s;int nex[1000005];int main(){    cin>>n>>s;    nex[0]=nex[1]=0;    for(int i=1;i<n;++i){        int j=nex[i];        while(j && s[j]!=s[i])      j=nex[j];        if(s[j]==s[i])          nex[i+1]=j+1;        else                    nex[i+1]=0;    }    printf("%d",n-nex[n]);    return 0;}
原创粉丝点击