首页 > 代码库 > hihocoder KMP算法
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算法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。