首页 > 其他 > 详细

kmp模板

时间:2017-12-02 16:50:07      阅读:161      评论:0      收藏:0      [点我收藏+]
//kuangbin的模板:
int S[maxn]; int T[maxn]; int next_[maxn]; int tlen,slen; void GetNext() { int k=-1; next_[0]=-1; int j=0; while(j<tlen) { if(k==-1||T[j]==T[k]) next_[++j]=++k; else k=next_[k]; } } //返回第一个匹配字符串的起始位置下标 int KMP_Index() { int i=0,j=0; GetNext(); while(i<slen&&j<tlen) { if(j==-1||S[i]==T[j]) ++i,++j; else j=next_[j]; } if(j==tlen) return i-tlen+1; else return -1; } //找出匹配字符串出现多少次 int KMP_Count() { int res=0; int j=0; if(slen==1&&tlen==1) { if(S[0]==T[0]) return 1; else return 0; } GetNext(); for(int i=0;i<slen;i++) { while(j>0&&S[i]!=T[j]) j=next_[j]; if(S[i]==T[j]) ++j; if(j==tlen) { res++; j=next_[j]; } } return res; }

kmp模板

原文:http://www.cnblogs.com/imzscilovecode/p/7954628.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!