/* strstr example */
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
void get_nextval(char *p,int *next)
{
int j,k;
next[0]=-1;
j=0;
k=-1;
while(j<strlen(p)-1)
{
if(k==-1||p[j]==p[k]) //匹配的情况下,p[j]==p[k]
{
j++;
k++;
next[j]=k;
}
else //p[j]!=p[k]
k=next[k];
}
}
int main ()
{
char *pchar = "ababa";
int *next = new int[strlen(pchar)+1];
get_nextval(pchar, next);
cout<<pchar<<endl;
for (int i = 0;i < strlen(pchar); i++)
{
cout<<next[i]<<endl;
}
}
KMP 记录一下
最新推荐文章于 2022-08-19 13:16:15 发布