LCP 数组入门规格说明
这本书是一个只讲 LCP 数组本身的单页交互教材。主页面不详细讲后缀数组构造, 也不讲最短唯一子数组那道应用题。
路由契约
默认路由是 /books/lcp/,并默认展示中文内容。英文路由是
/books/lcp/en.html。
配套规格页位于 /books/lcp/spec.html,中文规格页位于
/books/zh/lcp/spec.html。
页面链接回 /books/sa/ 学后缀数组,链接到
/books/sa/unique-subarray.html 学应用题。
字体与数学排版契约
本书继承 BOOK_STYLE.md 的全站书籍样式契约:正文、标题、导航、
控件、表格、图注和普通 UI 文本默认使用苹方字体栈;代码块、行内代码、
终端片段和代码编辑器默认使用 Cursor/LeetCode 代码字体栈
Monaco, "Cascadia Code", Consolas, "Courier New", ui-monospace, SFMono-Regular, Menlo, monospace。算法变量、数组下标、字符串长度、复杂度、
约束范围和公式能用 LaTeX/KaTeX 表达时必须优先使用 LaTeX。
教学契约
页面面向已经阅读后缀数组页、或愿意通过链接补前置知识的初学者。它解释:
- LCP 是两个字符串从开头开始连续相同的长度。
lcp[p]表示sa[p]和sa[p-1]的公共前缀长度。- 为什么排好序后的相邻后缀足以构造相邻 LCP。
rank[i]是从原始起点反查排序位置的逆映射。- 为什么 Kasai 可以复用
h,并在每个起点结束后让h--。
每个微步骤都必须给出明确的“为什么”。
交互契约
课程必须提供:
- 可编辑字符串输入和紧凑样例。
- 带 LCP 值的排序后缀表。
- 两个后缀的对齐比较,并高亮共同前缀。
- Kasai 扫描表,展示起点、rank、邻居、旧
h、新h和写入的 LCP。 - 上一步、下一步和编号微步骤轨道。
- 带速度预设和自定义毫秒间隔的自动播放。
- 指向后缀数组书和应用题页的交叉链接。
验收契约
发布前必须验证:
npm run build通过。npm run check:content通过。npm run check:dist通过。/books/lcp/打开无控制台错误。- 步骤轨道、自动播放、速度控制、样例、阶段标签和后缀行都能改变页面状态。
/books/lcp/en.html能正常打开。