poj3461
/*输出所有出现的位置、出现次数 */ #include<iostream> #include<cstring> using namespace std; string s,t; int ans; int next[100000]; int slen,tlen; int main() { cin>>s>>t; slen=s.length(),tlen=t.length(); int j,k;j=0,k=-1; next[0]=-1; while(j<tlen) { if(k==-1||t[j]==t[k]) { k++,j++; next[j]=k; } else k=next[k]; } int i; j=0,i=0; while(i<slen) { if(j==-1||s[i]==t[j])i++,j++; else j=next[j]; if(j==tlen) { cout<<i-tlen<<' '; ans++; } } cout<<endl<<ans; return 0; }
KMP模板
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【数据结构】您有一份KMP算法教学已到账,请注意查收!!!
【数据结构】第四章——串详细介绍KMP算法及其C语言实现……
KMP算法 C语言 数据结构 -
kmp与扩展kmp模板
kmp 扩展kmp
#include 最长公共前缀 i++ ios 子串