<<<<<<<字符串>>>>>>>
文章平均质量分 75
I_AM_HelloWord
爱好编程信息学
展开
-
字典树Trie总结
Trie就是把n个字符串建成一个树,树的每个节点都是一个字母,然后字符串的最后一个节点,我们会在Trie中对应的节点处打上标记,然后从根节点到每个标记点的路径上的字母依次排开就是n个字符串中的一个。 是不是很浅显? 稍稍举个例子: n=5 he his hers abcx bc 那么我们建的Trie应该是这样的 root / |原创 2017-08-29 20:39:33 · 993 阅读 · 0 评论 -
AC自动机总结
如果你还不知道KMP是什么,或者不知道Trie是什么,先点下面的链接,学好这两样再来看这篇文章。 KMP入门教程传送门。 Trie入门教程传送门。 好,那么我来讲讲AC自动机吧。 以洛谷P3808模板题为例, 如果我们有n个模式串,和一个文本串,我们需要统计有多少个模式串在文本串中出现了,怎么办? 显然,如果我们直接枚举每个模式串,然后将其与文本串进行匹配,判断是否匹配成功,那么效率就原创 2017-08-30 21:26:56 · 1509 阅读 · 0 评论 -
详解KMP入门
在网上很容易找到分析KMP算法的博客,但我觉得他们都没有讲到点子上去,导致一些读者越看越困惑,我则是看了刘汝佳的书后,自我比较通俗易懂的总结一下。 解决问题:给出字符串T和P,求P在T中第一次出现的位置,简称字符串匹配。 算法准备:最单纯的模拟算法就是每次枚举起始点,再判断是否匹配,效率O(nm),极低。 但根据经验,任何一个高效算原创 2016-10-25 18:52:28 · 1370 阅读 · 0 评论 -
登封造极之字符串——后缀数组
定义:给出字符串T,将T的所有后缀(包括空串和本身)排序后,得到一个顺序,定义sa[i]数组表示第i小的后缀是从T的哪个位置开始的,如: T=aabcd 则有sa={0,1,2,3,4,5} 构建:直接模拟,得出所有的后缀快排,则O(n^2*log n) 效率不够,定义S[i,k]表示从第i个位置开始的长度为k的字符串,rank[i,k]表示在所有排好序的S[i,k]原创 2016-05-26 13:03:06 · 927 阅读 · 0 评论