hipo 3 kmp算法

来源:互联网 发布:sql语句 drop 编辑:程序博客网 时间:2024/05/03 16:11
#include<iostream>#include<string>#include<map>using namespace std;void get_nextval(string& pattern, int* next){int i = 0, j = -1;next[0] = -1;while (pattern[i] != '\0'){if (j == -1 || pattern[i] == pattern[j]){++i;++j;next[i] = j;}elsej = next[j];}}int KMPMatch(string& s, string& p, int* next){int i, j, v = 0;i = 0;j = 0;get_nextval(p, next);while (i < s.length()){if (j == -1 || s[i] == p[j]){i++;j++;}else{j = next[j];       //消除了指针i的回溯}if (j == p.length()){++v;}}return v;}int main(){int n;cin >> n;string s, p;int next[10001] = { 0 };for (int i = 0; i < n; ++i){cin >> p;cin >> s;cout << KMPMatch(s, p, next) << endl;}return 0;}

0 0
原创粉丝点击