[hihoCoder] KMP算法

简介: Each time we find a match, increase the global counter by 1. For KMP, algorithm, you may refer to the following links which have nice explanations.

Each time we find a match, increase the global counter by 1.

For KMP, algorithm, you may refer to the following links which have nice explanations.

  1. KMP on jBoxer's blog;
  2. KMP on geeksforgeeks, with a well-commented C code.
 1 #include <iostream>
 2 #include <string>
 3 #include <vector>
 4 
 5 using namespace std;
 6 
 7 vector<int> kmpProcess(string t) {
 8     int n = t.length();
 9     vector<int> lps(n, 0);
10     for (int i = 1, len = 0; i < n; ) {
11         if (t[i] == t[len])
12             lps[i++] = ++len;
13         else if (len) len = lps[len - 1];
14         else lps[i++] = 0;
15     }
16     return lps;
17 }
18 
19 int kmp(string s, string t) {
20     int m = s.length(), n = t.length(), cnts = 0;
21     vector<int> lps = kmpProcess(t);
22     for (int i = 0, j = 0; i < m; ) {
23         if (s[i] == t[j]) {
24             i++;
25             j++;
26         }
27         if (j == n) cnts++;
28         if (i < m && s[i] != t[j]) {
29             if (j) j = lps[j - 1];
30             else i++;
31         }
32     }
33     return cnts;
34 }
35 
36 int main(void) {
37     int cases;
38     scanf("%d", &cases);
39     for (int i = 0; i < cases; i++) {
40         string s, t;
41         cin >> t;
42         cin >> s;
43         printf("%d\n", kmp(s, t));
44     }
45     return 0;
46 }

 

目录
相关文章
|
7月前
|
存储 机器学习/深度学习 算法
KMP、Trie树 、AC自动机‌ ,三大算法实现 优雅 过滤 netty 敏感词
KMP、Trie树 、AC自动机‌ ,三大算法实现 优雅 过滤 netty 敏感词
KMP、Trie树 、AC自动机‌ ,三大算法实现 优雅 过滤 netty  敏感词
|
6月前
|
机器学习/深度学习 监控 算法
局域网行为监控软件 C# 多线程数据包捕获算法:基于 KMP 模式匹配的内容分析优化方案探索
本文探讨了一种结合KMP算法的多线程数据包捕获与分析方案,用于局域网行为监控。通过C#实现,该系统可高效检测敏感内容、管理URL访问、分析协议及审计日志。实验表明,相较于传统算法,KMP在处理大规模网络流量时效率显著提升。未来可在算法优化、多模式匹配及机器学习等领域进一步研究。
178 0
|
算法 C++
A : DS串应用–KMP算法
这篇文章提供了KMP算法的C++实现,包括计算模式串的next数组和在主串中查找模式串位置的函数,用于演示KMP算法的基本应用。
|
算法
第四章 KMP算法理论基础
第四章 KMP算法理论基础
273 0
|
算法
KMP算法
KMP算法
161 0
|
算法
KMP算法
KMP算法
125 0
|
算法 Java
KMP算法详解及其在字符串匹配中的应用
KMP算法详解及其在字符串匹配中的应用
|
2月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
204 0
|
2月前
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
153 2
|
3月前
|
传感器 机器学习/深度学习 编解码
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
205 3

热门文章

最新文章