码迷,mamicode.com
首页 > 其他好文 > 详细

KMP

时间:2017-09-11 10:13:32      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:ext   else   返回   div   pre   res   logs   第一个   ==   

//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

标签:ext   else   返回   div   pre   res   logs   第一个   ==   

原文地址:http://www.cnblogs.com/imzscilovecode/p/7503170.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!