首页 > 代码库 > KMP
KMP
1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<string> 5 #include<memory.h> 6 using namespace std; 7 8 int count = 0; 9 string s,l;10 11 void get_next(string src, int m, int *next)12 {13 int i = 0,j = -1;14 next[0] = j;15 while (i < m) {16 while (j != -1 && src[j] != src[i])17 j = next[j];18 i++,j++;19 if (j == m)20 next[i] = next[j-1];21 else next[i] = j;22 }23 }24 25 void kmp(string s,int m, string l, int n)26 {27 int next[10005];28 get_next(s,m,next);29 int i = 0,j = 0;30 while (i < n) {31 while (j != -1 && s[j] != l[i])32 j = next[j];33 i++,j++;34 if (j == m){35 count++;36 j = next[j];37 }38 }39 }40 int main()41 {42 int t;43 cin >> t;44 while (t--) {45 count = 0;46 cin >> s >> l;47 kmp(s,s.length(),l,l.length());48 cout << count << endl;49 }50 return 0;51 }
介绍有很多,觉得真正写得好,容易懂的博客:
http://blog.csdn.net/guo_love_peng/article/details/6618170
KMP
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。