kmp模式串一求next值

Description

求子串的next值,用next数组存放,全部输出

Input

输入一个字符串

Output

输出所有next值

Sample Input

abaabcac

Sample Output

0 1 1 2 2 3 1 2

HINT

Source

AC代码:

#include <iostream>
#include<string.h>
#include<cstdio>
using namespace std;
int i,j,len;
int next[101];
char a[101];
int main()
{
    cin>>a;
    len=strlen(a);//string类用a.length()函数
    int i=0,j=-1;
    next[0]=-1;
    while(i<len)
    {
        if(j==-1||a[i]==a[j])
        {
            i++;
            j++;
            //if(a[i]!=a[j])
             //   next[i]=j;
           // else
                next[i]=j;
        }
        else
            j=next[j];

    }//已经算出了next数组
    i=0;
    while(i<len)
    {
        cout<<next[i]+1<<" ";
        i++;
    }
    return 0;


}

 

    原文作者:KMP算法
    原文地址: https://blog.csdn.net/a716121/article/details/48714439
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞