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

模板-KMP

时间:2020-03-10 15:46:06      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:event   void   sed   click   amp   style   ret   display   span   

技术图片
 1 void doit(){
 2     //字符串采用快速读入 从1开始 
 3     pre=0;
 4     next[0]=0;next[1]=0;//起点标记 
 5     FOR(suf,2,lenx){
 6         while(pre>0&&x[suf]!=x[pre+1]) pre=next[pre]; //递推求最大公共前后缀 
 7         //next[suf]=以suf为末尾的后缀的【最大公共前后缀】对应的前缀末尾位置-1
 8         //0 表示不存在 
 9         if(x[suf]==x[pre+1]) pre++;
10         next[suf]=pre;
11     }
12     return;
13 }
14 void kmp(){
15     int ans=0; 
16     int pre=0;//匹配指针 
17     FOR(suf,1,lens){
18         while(pre>0&&s[suf]!=x[pre+1]) pre=next[pre]; //匹配指针前滚复位 
19         if(s[suf]==x[pre+1]) pre++; //fix 
20         if(pre==lenx) pre=next[pre],ans++;//匹配成功,复位(作失配处理); 
21     }    
22     return;
23 }
KMP

 

模板-KMP

标签:event   void   sed   click   amp   style   ret   display   span   

原文地址:https://www.cnblogs.com/mukoiaoi/p/12455810.html

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