[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 }

 

目录
相关文章
|
4天前
|
算法
第四章 KMP算法理论基础
第四章 KMP算法理论基础
8 0
|
7天前
|
算法
KMP算法
KMP算法
14 0
|
2月前
|
算法 C++
A : DS串应用–KMP算法
这篇文章提供了KMP算法的C++实现,包括计算模式串的next数组和在主串中查找模式串位置的函数,用于演示KMP算法的基本应用。
|
3月前
|
数据采集 算法 JavaScript
揭开JavaScript字符串搜索的秘密:indexOf、includes与KMP算法
JavaScript字符串搜索涵盖`indexOf`、`includes`及KMP算法。`indexOf`返回子字符串位置,`includes`检查是否包含子字符串。KMP是高效的搜索算法,尤其适合长模式匹配。示例展示了如何在数据采集(如网页爬虫)中使用这些方法,结合代理IP进行安全搜索。代码示例中,搜索百度新闻结果并检测是否含有特定字符串。学习这些技术能提升编程效率和性能。
揭开JavaScript字符串搜索的秘密:indexOf、includes与KMP算法
|
2月前
|
算法
KMP算法
KMP算法
20 0
|
3月前
|
算法 Java
KMP算法详解及其在字符串匹配中的应用
KMP算法详解及其在字符串匹配中的应用
|
4月前
|
人工智能 算法 BI
一篇文章讲明白KMP算法(俗称看毛片算法)
一篇文章讲明白KMP算法(俗称看毛片算法)
43 0
|
8天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于MSER和HOG特征提取的SVM交通标志检测和识别算法matlab仿真
### 算法简介 1. **算法运行效果图预览**:展示算法效果,完整程序运行后无水印。 2. **算法运行软件版本**:Matlab 2017b。 3. **部分核心程序**:完整版代码包含中文注释及操作步骤视频。 4. **算法理论概述**: - **MSER**:用于检测显著区域,提取图像中稳定区域,适用于光照变化下的交通标志检测。 - **HOG特征提取**:通过计算图像小区域的梯度直方图捕捉局部纹理信息,用于物体检测。 - **SVM**:寻找最大化间隔的超平面以分类样本。 整个算法流程图见下图。
|
2天前
|
算法
基于粒子群算法的分布式电源配电网重构优化matlab仿真
本研究利用粒子群算法(PSO)优化分布式电源配电网重构,通过Matlab仿真验证优化效果,对比重构前后的节点电压、网损、负荷均衡度、电压偏离及线路传输功率,并记录开关状态变化。PSO算法通过迭代更新粒子位置寻找最优解,旨在最小化网络损耗并提升供电可靠性。仿真结果显示优化后各项指标均有显著改善。
|
9天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于GA遗传优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
该算法结合了遗传算法(GA)与分组卷积神经网络(GroupCNN),利用GA优化GroupCNN的网络结构和超参数,提升时间序列预测精度与效率。遗传算法通过模拟自然选择过程中的选择、交叉和变异操作寻找最优解;分组卷积则有效减少了计算成本和参数数量。本项目使用MATLAB2022A实现,并提供完整代码及视频教程。注意:展示图含水印,完整程序运行无水印。