KMP算法 KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个next ...
分类:
编程语言 时间:
2020-05-30 20:21:12
阅读次数:
61
这一章,我们主要学习了串的知识点,最主要的是BF算法和KMP算法,BF简单粗暴,但时间的开销比较高,在BF算法里,匹配过程简单,注意指针开始匹配的语句是i=i-j+2;然后就是要多多回归课本。 还有就是kmp算法,KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的 ...
分类:
其他好文 时间:
2020-05-06 01:32:58
阅读次数:
55
1.本章学习了字符串的更多应用和数组的扩展知识。 现在学习字符串,不同于以往简单的使用,输入,输出,这一章带我深入到底层了解它的结构,学习很多字符串函数的实现方法,而不是简单地调包。还学到两个很有趣的匹配方法BF和KMP。KMP算法非常巧妙,通过观察主串的特点竟然能把m*n的复杂度优化为m+n.(虽 ...
分类:
其他好文 时间:
2020-05-05 23:51:55
阅读次数:
96
一、内容小结 (一) 串 定义 空串、子串、主串等概念 顺序存储——堆 链式存储 (二) 串的模式匹配算法 BF算法 KMP算法 (三) 数组 顺序存储 特殊矩阵的压缩存储 (四) 广义表 定义 取表头和取表尾两个运算 头尾链表、拓展线性链表的存储结构 (五)对string类型进一步了解 二、心得体 ...
分类:
其他好文 时间:
2020-05-05 23:49:07
阅读次数:
100
内容小结 一、字符串 1.定义 字符串是零个或多个组成的有限序列,只包含空格的串成为空格串。串中所包含的字符个数成为串的长度,长度为0的串为空串,记作“”,一个非空串通常该记作: S=“s1,s2…sn” 字符串中任意个连续的字符组成的子序列称为该串的子串,相应地,包含子串的串称为主串,子串的第一个 ...
分类:
其他好文 时间:
2020-05-05 19:46:08
阅读次数:
48
题目链接 题意 有一个主串$L$,和一个模式串集$S$,每次可以从主串中删除一个模式串,删除后主串剩余的两部分合并,求能得到的主串的最小长度 题解  挺神仙的dp如果已经知道了区间$[i,j]$能否被删除的话,那么就可以用$dp[i]$表示对$L$的前$i$个字符进行操作后能得到的最小的长度 ...
分类:
其他好文 时间:
2020-05-01 01:13:29
阅读次数:
62
简介 字符串的模式匹配是对字符串的基本操作之一,广泛应用于生物信息学、信息检索、拼写检查、语言翻译、数据压缩、网络入侵检测等领域,如何简化其复杂性一直是算法研究中的经典问题。字符串的模式匹配实质上就是寻找模式串P是否在主串T 中,且其出现的位置。我们对字符串匹配的效率的要求越来越高, 应不断地改良模 ...
分类:
编程语言 时间:
2020-04-30 21:15:28
阅读次数:
77
经过几天断断续续的思考,KMP总算是差不多搞懂了。 主串s和模式串p进行匹配,p在s中出现的位置。 代码如下: #include <cstdio> #include <iostream> using namespace std; const int N = 10001, M = 100001; ch ...
分类:
其他好文 时间:
2020-04-12 14:09:23
阅读次数:
57
KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。 暴力匹配算法 假设现在我们面临这样一个 ...
分类:
编程语言 时间:
2020-04-05 22:07:42
阅读次数:
60
KMP 模板 prefix function 前缀函数 例题 [CF204E] 题意 给定一主串,再查询某字符串是否可以由主串的两个子串拼接而成. 思路 正反向各kmp一次 记录查询的字符串的前缀和后缀在主串中的位置 代码:先空着,之前的代码写的不太对 [CCPC秦皇岛] 题意 跟找循环节有关 思路 ...
分类:
其他好文 时间:
2020-03-28 00:44:11
阅读次数:
59