KMP算法总结

KMP里里外外学了很多遍,然后从一位大牛那里学到了比较易懂的理解方法。

博客链接:http://www.matrix67.com/blog/archives/115

 

唉~KMP算法Next数组强大无比。

Next数组:

 1 //next数组的求法
 2 void getNext(int len)
 3 {
 4     int i=0,j=-1;
 5     Next[0]=-1;
 6     while(i<len)
 7     {
 8         if(j==-1||s[i]==s[j])
 9         {
10             i++;
11             j++;
12             Next[i]=j;
13         }
14         else
15             j=Next[j];
16     }
17 }
View Code

模式匹配:

 1 int find(int len1,int len2)
 2 {
 3     int i=0,j=0;
 4     int sum=0;
 5     while(j<len2&&i<len1)
 6     {
 7         if(j==-1||b[j]==a[i])
 8         {
 9             i++;j++;
10         }
11         else
12         {
13             j=Next[j];
14         }
15         if(j==len2)
16          {
17          sum++;
18          j=0;
19          }
20     }
21     return sum;
22 }
View Code

推荐题目:HDU 1711  HDU 1686 HDU 2087 HDU 3746

hust里的kuangbin专题

posted on 2015-07-15 15:43  小松song  阅读(169)  评论(0)    收藏  举报

导航