随笔分类 -  字符串

Z函数 & 扩展KMP
摘要:原视频 Z 函数 求一个字符串str 所有 以第i位开始的后缀与str的最长公共前缀(lcp) 时间复杂度: O(n) 理解 使用 z[i]表示第i位开始的后缀与str的最长公共前缀的长度 使用Z Box快速计算Z数组 Z Box是字符串str中的一个区间[l,r]满足str[l,r]
56
0
0
后缀数组和后缀自动机模板
摘要:原文:https://oi-wiki.org/string/sa/ 后缀数组 下面说的都是倍增法实现。 字符串下标都从 1 开始。 算法作用: 在O(nlogn)的时间复杂下实现 后缀数组有两个关键的数组: sa[i]表示将所有后缀排序后第 i 小的后缀的编号 height[i] 表示 sa[i
121
0
0
字符串 _ AC自动机
摘要:概述 算法作用: 在O(n)的复杂度 求出多个匹配串 出现在 模式串的 哪些地方 出现次数。 算法核心: 自动机的和kmp 类似,关键是next指针 构建next指针 next指针:状态 u 的 next 指针指向另一个状态 v, 当且仅当 v 是 u 的最长后缀。 即: next 指针是指向所有模
29
0
0
字符串 _ 马拉车(Manacher)算法
摘要:概述 马拉车(Manacher)是查找一个字符串的最长回文子串的线性算法。 同时还可以用于求所有回文子串数量。 算法原理与实现 计算字符串的最长回文字串的朴素算法: 枚举回文串的中点,并且分为两种情况: 一种是回文串长度是奇数的情况 另一种是回文串长度是偶数的情况 时间复杂度为O(n2). 马
77
0
0
字符串哈希(Hash)
摘要:基础概念 作用: 快速判断两个串是否相等,判断一个字符串是否出现过。 更多应用可以看这篇好文。 字符串哈希实质上就是把每个不同的字符串转成不同的整数。 可以发现,与一个string有关的HASH值不仅仅跟每个字符的个数有关,还和字符所在的位数有关。 比如说对于字符串:abc,base设为32 $a=
1765
0
0
Trie树(字典树)
摘要:作用 看下面两个题: 给出n个单词和m个询问,每次询问一个单词,回答这个单词是否在单词表中出现过。 答: 简单!map,短小精悍。 给出n个单词和m个询问,每次询问一个前缀,回答询问是多少个单词的前缀。 答: map !TLE警告! 这就需要字典树 概念 单词查找树,Trie树,是一种树形结构,是一
183
0
0
数据结构 四、字符串 和 KMP算法
摘要:串:内容受限的线性表 (数据元素只能是字符) 串:String 字符组成的有限序列 顺序储存用的多 案例:病毒感染检测(病毒dna环状) 结构类型定义 #define MAXLEN 255 typedef struct { char ch[MAXLEN+1]; int length; }SStrin
126
0
0
点击右上角即可分享
微信分享提示
深色
回顶
收起