English

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。

教学契约

页面面向已经阅读后缀数组页、或愿意通过链接补前置知识的初学者。它解释:

  1. LCP 是两个字符串从开头开始连续相同的长度。
  2. lcp[p] 表示 sa[p]sa[p-1] 的公共前缀长度。
  3. 为什么排好序后的相邻后缀足以构造相邻 LCP。
  4. rank[i] 是从原始起点反查排序位置的逆映射。
  5. 为什么 Kasai 可以复用 h,并在每个起点结束后让 h--

每个微步骤都必须给出明确的“为什么”。

交互契约

课程必须提供:

  1. 可编辑字符串输入和紧凑样例。
  2. 带 LCP 值的排序后缀表。
  3. 两个后缀的对齐比较,并高亮共同前缀。
  4. Kasai 扫描表,展示起点、rank、邻居、旧 h、新 h 和写入的 LCP。
  5. 上一步、下一步和编号微步骤轨道。
  6. 带速度预设和自定义毫秒间隔的自动播放。
  7. 指向后缀数组书和应用题页的交叉链接。

验收契约

发布前必须验证:

  1. npm run build 通过。
  2. npm run check:content 通过。
  3. npm run check:dist 通过。
  4. /books/lcp/ 打开无控制台错误。
  5. 步骤轨道、自动播放、速度控制、样例、阶段标签和后缀行都能改变页面状态。
  6. /books/lcp/en.html 能正常打开。