0
点赞
收藏
分享

微信扫一扫

通过神经网络模拟人类大脑的学习过程

西街小学的王 2024-02-14 阅读 11
C++算法

目录

1 介绍

1.1 Z函数算法

Z函数算法,也叫作扩展KMP算法。它用来求取文本串text和模式串pattern的匹配位置。

首先介绍lcp(s1,s2)函数,它表示字符串s1和字符串s2的最大公共前缀长度。那么z[i] = lcp(text, text[i:])

求取z数组的代码如下,

int n = text.size();
vector<int> z(n, 0);
int left = 0, right = 0;
for (int i = 1; i < n; ++i) {
	if (i <= right) {
		z[i] = min(z[i - left], right - i + 1);
	}
	while (i + z[i] < n && text[z[i]] == text[i + z[i]]) {
		left = i;
		right = i + z[i];
		z[i] += 1;
	}
}

然后求取文本串text中模式串pattern的位置,可以按照以下步骤:

  1. 构造新串ss = pattern + text
  2. 计算新串s的z数组。
  3. 最终答案为满足i >= pattern.size() && z[i] >= pattern.size()的下标i

2.2 KMP算法

待补充…

2 训练

831KMP字符串
3031将单词恢复初始状态所需的最短时间II
3036匹配模式数组的子数组数目II

举报

相关推荐

0 条评论