#include<bits/stdc++.h>
using namespace std;
#define MAXSIZE 100
typedef struct{
char str[MAXSIZE];
int length;
}seqstring;
int main(){
return 0;
}
int index(seqstring *s,seqstring *t){ //朴素的模式匹配方法
int i,j;
for(i=0;i<s->length-t->length+1;i++){
for(j=i;j<i+t->length;){
if(s->str[j]==t->str[j]){
j++;
}
else{
break;
}
}
if(j==i+t->length){
return i+1;
}
}
return -1;
}
void getnext(seqstring p, int next[]){ //求next[]
int i=0,j=-1;
while(j<p.length){
if(j==-1||p.str[j]==p.str[i]){
i++;j++;
next[i]=j;
}
else{
j=next[j];
}
}
}
void getnextval(seqstring t,int nextval[]){ //求next[]的改进
int j=0,k=-1;
nextval[0]=-1;
while (j<t.length)
{
if (k==-1 || t.data[j]==t.data[k])
{
j++;k++;
if (t.data[j]!=t.data[k])
nextval[j]=k;
else
nextval[j]=nextval[k];
}
else k=nextval[k];
}
}
int KMP(seqstring s,seqstring p, int next[]){ //KMP快速模式匹配算法
int i=0;j=0;
while(i<s.lenth&&j<p.length){
if(j==-1||s.str[i]==p.str[j]){
i++;j++;
}
else{
j=next[j];
}
}
if(j==p.length) return (i-p.length);
else return -1;
}
字符串KMP快速模式匹配算法(代码)
最新推荐文章于 2024-07-24 22:13:06 发布