hihocoder KMP算法
Posted 王宜鸣
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hihocoder KMP算法相关的知识,希望对你有一定的参考价值。
思路:
KMP模板。
实现:
1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #include <iostream> 5 #include <string> 6 using namespace std; 7 8 int f[10005]; 9 10 void getfill(string s) 11 { 12 memset(f, 0, sizeof(f)); 13 for(int i = 1; i < s.size(); i++) 14 { 15 int j = f[i]; 16 while(j && s[i] != s[j]) 17 j = f[j]; 18 f[i+1] = (s[i] == s[j]) ? j+1 : 0; 19 } 20 } 21 22 int find(string a, string s) 23 { 24 int ans = 0; 25 getfill(s); 26 int j = 0; 27 for(int i = 0; i < a.size(); i++) 28 { 29 while(j && a[i] != s[j]) 30 j = f[j]; 31 if(a[i] == s[j]) 32 j ++; 33 if(j == s.size()) 34 { 35 ans ++; 36 } 37 } 38 return ans; 39 } 40 41 int main() 42 { 43 int n; 44 cin >> n; 45 string a, b; 46 for(int i = 0; i < n; i++) 47 { 48 cin >> a >> b; 49 cout << find(b, a) << endl; 50 } 51 return 0; 52 }
以上是关于hihocoder KMP算法的主要内容,如果未能解决你的问题,请参考以下文章