您的位置:首页 > 其它

模式匹配算法kmp

2011-10-10 13:56 281 查看
void get_next()	//求next[]数组
{
for(int i=0,j=-1;i!=st.size()-1;)	//st.size()是st模式串的长度大小
{
if(-1==j ||st[i]==st[j])
{
i++;
j++;
next[i]=j;
}
else
{
j=next[i];
++i;
next[i]=j;
}
}//for

next[0]=-1;
}


void kmp()
{
get_next();	//求出next[]数组

int i=0,j=0;

while(i<s.size() && j<st.size())	//s是待匹配的主串,st是模式串
{
if(s[i]==st[j])
{
i++;
j++;
}
else j=next[j];
}

if(j>=st.size())	//游标j的大于或等于模式串的长度,说明已找到
cout<<"Bingo!"<<endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: