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

 

目录
相关文章
|
3月前
|
算法
第四章 KMP算法理论基础
第四章 KMP算法理论基础
29 0
|
3月前
|
算法
KMP算法
KMP算法
49 0
|
5月前
|
算法 C++
A : DS串应用–KMP算法
这篇文章提供了KMP算法的C++实现,包括计算模式串的next数组和在主串中查找模式串位置的函数,用于演示KMP算法的基本应用。
|
6月前
|
数据采集 算法 JavaScript
揭开JavaScript字符串搜索的秘密:indexOf、includes与KMP算法
JavaScript字符串搜索涵盖`indexOf`、`includes`及KMP算法。`indexOf`返回子字符串位置,`includes`检查是否包含子字符串。KMP是高效的搜索算法,尤其适合长模式匹配。示例展示了如何在数据采集(如网页爬虫)中使用这些方法,结合代理IP进行安全搜索。代码示例中,搜索百度新闻结果并检测是否含有特定字符串。学习这些技术能提升编程效率和性能。
146 1
揭开JavaScript字符串搜索的秘密:indexOf、includes与KMP算法
|
5月前
|
算法
KMP算法
KMP算法
40 0
|
6月前
|
算法 Java
KMP算法详解及其在字符串匹配中的应用
KMP算法详解及其在字符串匹配中的应用
|
7月前
|
人工智能 算法 BI
一篇文章讲明白KMP算法(俗称看毛片算法)
一篇文章讲明白KMP算法(俗称看毛片算法)
73 0
|
2天前
|
算法 数据安全/隐私保护
室内障碍物射线追踪算法matlab模拟仿真
### 简介 本项目展示了室内障碍物射线追踪算法在无线通信中的应用。通过Matlab 2022a实现,包含完整程序运行效果(无水印),支持增加发射点和室内墙壁设置。核心代码配有详细中文注释及操作视频。该算法基于几何光学原理,模拟信号在复杂室内环境中的传播路径与强度,涵盖场景建模、射线发射、传播及接收点场强计算等步骤,为无线网络规划提供重要依据。
|
15天前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
150 80
|
3天前
|
机器学习/深度学习 数据采集 算法
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB2022a实现时间序列预测,采用CNN-GRU-SAM网络结构。卷积层提取局部特征,GRU层处理长期依赖,自注意力机制捕捉全局特征。完整代码含中文注释和操作视频,运行效果无水印展示。算法通过数据归一化、种群初始化、适应度计算、个体更新等步骤优化网络参数,最终输出预测结果。适用于金融市场、气象预报等领域。
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真

热门文章

最新文章

下一篇
开通oss服务