随笔分类 - 字符串算法
摘要:要看懂本文可能至少需要知道什么是后缀( 还得知道一些自动机的概念( 和ac自动机有个很大的不同,sam它的字符是放在边上的(似乎放在点上也可以),因为大部分图都是这样的,(比如下图),把点看成了能接受从起点到该点的路径串的状态。 T状态能接受abc和bc字符串。 ( ps:图随手画的) 首先定义一些
阅读全文
摘要:1、KMP 1.1、kmp算法需先对模式串建立fail数组,数组所包含的信息就是比如fail[i]表示前缀s[1...i]的最大border长度。 若 0 ≤ r < |s|, pre(s, r) = suf(s, r), 就称 pre(s, r) 是 s 的 border。 也就是当匹配完第i个字
阅读全文
摘要:https://www.nowcoder.com/acm/contest/147/F 即做4个kmp,可持久化每增加一个字符后的match。 题外话:假如说在a串中找b串,做kmp的过程其实在不断的使b串的前缀与当前匹配到的串的后缀对齐,扫a串,每增加一个字符就更新一次match(最大匹配位置),当
阅读全文
摘要:把一些元素node,通过对其特征的分析,设计哈希函数将其转译成数组下标(或地址)。 key=hash1(node) (node较复杂,则先转为key),a[hash2(key)]. 在竞赛中最直接的用处便是判重和判等价。 1,对大质数取模(最简单的hash函数) a[key%1000000009]
阅读全文
摘要:KMP算法中也涉及到子串与前缀的重复,而扩展KMP算法求得就是字符串S的所有后缀与字符串T的最长公共前缀 可以知道,一个字符串所有的子串便是这个字符串所有后缀的所有前缀(或前缀的后缀 ),那么求的信息其实也是字符串S的所有子串与字符串T前缀的重复 每个后缀的最长公共前缀长度存在一个extend数组中
阅读全文

浙公网安备 33010602011771号