AC自动机 简要说明 $AC$ 自动机,全称 $Aho Corasick\ automaton$ ,是一种有限状态自动机,应用于多模式串匹配.在 $OI$ 中通常搭配 $dp$ 食用.因为它是 状态 自动机. 感性理解:在 $Trie$ 树上加上 $fail$ 指针.具体的讲解可以去看dalao们的 ...
分类:
其他好文 时间:
2019-01-10 18:20:27
阅读次数:
135
题解: 树上的串匹配,模式串的总长$|S|$,令$\overline {S} $为$S$的反串; 对$S$和$\overline {S} $分别建自动机 $u -> v$可以分成三个部分去统计 ①跨越了$lca(u, v)$的部分,长度不会超过$2|S|$,$kmp$暴力统计答案; ②$(u,lca ...
分类:
其他好文 时间:
2019-01-09 11:37:18
阅读次数:
217
介绍 在高级语言中比如Python,我们通常会用正则表达式(regex)处理复杂字符串, 比如校验手机号码格式的正确性,提取 里面的一些关键信息。 在C语言中也有一个函数 可以达到类似的功能,但是不及正则表达式灵活强大。 用法 Example: 这是模拟的一条字符串,现在要求从中提取出 。 运行结果 ...
分类:
其他好文 时间:
2019-01-09 01:19:56
阅读次数:
259
软件:emu8086 语言:汇编语言(Assembly) 注意:本文列出了字符串匹配和字符串输入显示的代码,全部代码为博主独自一人编写,会有瑕疵,谨慎使用。 7.字符串匹配设计 7.1设计要求: 要求掌握提示信息的设置及读取键入信息的方法。设计程序,从键盘输入两个字符串进行比较,如相同,则显示“MA ...
分类:
编程语言 时间:
2019-01-08 21:12:19
阅读次数:
491
KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法)。KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是实现一个next()函 ...
分类:
编程语言 时间:
2019-01-07 21:18:16
阅读次数:
216
题意 给定 $n$ 个字符串,$m$ 个询问,每次询问 $a$ 字符串的后缀和 $b$ 字符串的前缀最多能匹配多长。 $1\leq n,m \leq 10^5$ 思路 多串匹配,考虑 $\text{AC}$自动机,对 $n$ 个串建自动机,观察这个结构,不难发现 $Trie$ 树的结构和前缀有关,$ ...
分类:
其他好文 时间:
2019-01-06 17:59:19
阅读次数:
202
根据博主July的https://blog.csdn.net/v_july_v/article/details/7041827所载,记录个人理解心得(红色部分为个人理解): 1.KMP算法流程 假设现在文本串S匹配到 i 位置,模式串P匹配到 j 位置 1.如果j = -1,或者当前字符匹配成功(即 ...
分类:
编程语言 时间:
2019-01-06 12:46:39
阅读次数:
173
给若干个模式串,以及若干个句子,判断每个句子里是否包含模式串。 句子和模式串都由小写字母组成 ...
分类:
其他好文 时间:
2019-01-05 13:40:07
阅读次数:
174
//随机数生成器Math.random()装换为整数parseInt()日期时间函数(需要用变量调用):var b = new Date(); //获取当前时间b.getTime() //获取时间戳b.getFullYear() //获取年份b.getMonth()+1; //获取月份b.getDa ...
分类:
编程语言 时间:
2019-01-04 22:37:15
阅读次数:
219
KMP算法利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是实现一个next()函数,函数本身包含了模式串的局部匹配信息。时间复杂度O(m+n)。 Next()函数的详解 把将要进行next计算的字符串S分成 k ,j 前后两串,k代表前串开头所在的序号,j代表后 ...
分类:
编程语言 时间:
2019-01-02 20:41:40
阅读次数:
221