字符串与自动机
这些是比逐位比较更快的经典字符串算法。KMP 和 Z 函数能在线性时间内找到模式串,Manacher 专门找回文,字符串哈希则能在常数时间内比较两个子串。
这是最小的一份题单,九章共 31 道题:KMP、Z 函数、Manacher、字符串哈希、最小表示法、AC 自动机、后缀数组与后缀自动机、子序列自动机,以及进阶技巧。适合在题解里见过这些名字、想拿真题练一练的人。
31 道题难度分 1167–26059 章节
进入书房
想有人陪你把这份题单做完吗?登录后进入书房,女主角会一次递给你一道题。
一、KMP(Prefix 的 Suffix)
§1.1 基础
| 题目 | 难度分 |
|---|---|
| 28. 找出字符串中第一个匹配项的下标 | 未评分 |
| 796. 旋转字符串 | 1167 |
| 1392. 最长快乐前缀 | 1876 |
| 1764. 通过连接另一个数组的子数组得到一个数组 | 1588 |
| 1668. 最大重复子字符串 | 1396 |
| 459. 重复的子字符串 | 未评分 |
| 2800. 包含三个字符串的最短字符串 | 1856 |
| 214. 最短回文串 | 未评分 |
| 3529. 统计水平子串和垂直子串重叠格子的数目 | 2105 |
| 686. 重复叠加字符串匹配 | 未评分 |
| 3455. 最短匹配子字符串 | 2303 |
二、Z-Function(Suffix 的 Prefix)
§2.1 基础
| 题目 | 难度分 |
|---|---|
| 2223. 构造字符串的总得分和 | 2220 |
| 3474. 字典序最小的生成字符串 | 2605 |
§2.2 LCP array
| 题目 | 难度分 |
|---|---|
| 2430. 对字母串可执行的最大删除数 | 2102 |
三、Manacher Algorithm(Palindrome)
§3.1 基础
| 题目 | 难度分 |
|---|---|
| 5. 最长回文子串 | 未评分 |
| 647. 回文子串 | 未评分 |
| 214. 最短回文串 | 未评分 |
| 1745. 分割回文串 IV | 1925 |
§3.2 中心扩展法
| 题目 | 难度分 |
|---|---|
| 5. 最长回文子串 | 未评分 |
| 2472. 不重叠回文子字符串的最大数目 | 2013 |
四、String Hashing
§4.1 基础
| 题目 | 难度分 |
|---|---|
| 28. 找出字符串中第一个匹配项的下标 | 未评分 |
| 187. 重复的 DNA 序列 | 未评分 |
| 1316. 不同的循环子字符串 | 1837 |
| 2261. 含最多 K 个可整除元素的子数组 | 1724 |
| 1044. 最长重复子串 | 2429 |
| 718. 最长重复子数组 | 未评分 |
五、最小表示法
§5.1 基础
| 题目 | 难度分 |
|---|---|
| 899. 有序队列 | 2097 |
| 1625. 执行操作后字典序最小的字符串 | 1992 |
七、Aho-Corasick Automaton
§7.1 基础
| 题目 | 难度分 |
|---|---|
| 1032. 字符流 | 1970 |
| 1408. 数组中的字符串匹配 | 1223 |
八、Suffix Array/Suffix Automaton
§8.1 基础
| 题目 | 难度分 |
|---|---|
| 1163. 按字典序排在最后的子串 | 1864 |
| 1754. 构造字典序最大的合并字符串 | 1829 |
| 1044. 最长重复子串 | 2429 |
| 718. 最长重复子数组 | 未评分 |
| 1408. 数组中的字符串匹配 | 1223 |
| 1316. 不同的循环子字符串 | 1837 |
九、Subsequence Automaton
§9.1 基础
| 题目 | 难度分 |
|---|---|
| 792. 匹配子序列的单词数 | 1695 |
十、其他
§10.1 进阶
| 题目 | 难度分 |
|---|---|
| 466. 统计重复个数 | 未评分 |
这是阶段一的最后一份题单,核心小节做完后,路线就会进入需要递归的阶段二。
难度分来自 zerotrac 的 LeetCode 竞赛评分。部分题目没有 zerotrac 分数,会标记为“未评分”。
进入书房