KMP算法求字符串的最小循环节

题目链接(题目链接)




说到求字符串的最小循环节就不得不提及KMP算法
因为要求循环节,还需要用到KMP算法的next数组

KMP算法本来是用来求一个串中是否包含另一个串,或者说一个串是否为另一个串的子串

下面有一个视频,很清晰的介绍了KMP算法

KMP算法详解,看不懂算我输


如果KMP算法理解其原理了,那么这道题也是非常简单的

用了KMP中的NEXT数组

结果直接是strlen(s)-NEXT【strlen(s)】

#include
#include
#include
using namespace std;
int nextnum[1000010];
int main()
{
    string s;
    int step=1,n;
    while(cin>>s)
    {
        int len=s.size();
        memset(nextnum,0,sizeof(0));
        int i=0,j=1;
        while(j





你可能感兴趣的:(字符串)