![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
字符串
吃喝睡
一枚宅男
展开
-
AC自动机的理解
题意 多个 B串 匹配 A 串 学完ac自动机,发现其实它与KMP有异曲同工之妙。 我们知道,KMP要先对B串进行自我匹配求出 F 数组,同样的,AC自动机也要对所有B串进行自我匹配。 区别在于KMP中,B串只有一个,所以我们直接循环进行,但是ac自动机中B串有多个,每个都用循环处理的话时间复杂度不支持,所以我们考虑用trie树,在trie树上建立类似于KMP中的 F[ n ] 数组; 首先复习一下 F 数组的意义 F[ i ] 表示在trie书上从根节点开始以 i 为结尾的串的后缀 ...原创 2021-08-28 22:19:31 · 94 阅读 · 0 评论 -
KMP理解加算法模板
首先明确,KMP是用于在字符串A中寻找有多少个字符串B以及他们的位置的算法 为了完成要求 首先要先对B串进行自我匹配求出 F数组 F数组表示的意义是什么呢 F[ i ]的意义在于 :表示 位置1~F[ i ] 所形成的子串与(i - F[ i ]+1 ~ i )形成的子串 相同 那么我们可以想象 如果 B串与A串在B串(i+1)这个位置 没有匹配上 那么们只需要使 i=F[ i ],便可以继续匹配了 为什么呢 因为既然已经匹配到 (i+1)这个位置了 那么 i -F[ ...原创 2021-08-28 00:14:25 · 93 阅读 · 0 评论