English

后缀数组入门规格说明

这本书是一个只讲后缀数组本身的单页交互教材。主页面不讲 LCP,也不讲最短 唯一子数组那道应用题。

路由契约

默认路由是 /books/sa/,并默认展示中文内容。英文路由是 /books/sa/en.html

配套规格页位于 /books/sa/spec.html,中文规格页位于 /books/zh/sa/spec.html

页面链接到 /books/lcp/ 学 LCP,链接到 /books/sa/unique-subarray.html 学应用题。

字体与数学排版契约

本书继承 BOOK_STYLE.md 的全站书籍样式契约:正文、标题、导航、 控件、表格、图注和普通 UI 文本默认使用苹方字体栈;代码块、行内代码、 终端片段和代码编辑器默认使用 Cursor/LeetCode 代码字体栈 Monaco, "Cascadia Code", Consolas, "Courier New", ui-monospace, SFMono-Regular, Menlo, monospace。算法变量、数组下标、rank、字符串长度、复杂度、 约束范围和公式能用 LaTeX/KaTeX 表达时必须优先使用 LaTeX。

教学契约

页面面向完全初学者,并解释:

  1. 后缀:从某个起点一直到结尾的整段。
  2. 后缀数组:按字典序排好后的后缀起点列表。
  3. 字典序:先比第一个字符,只有相同才向右继续比。
  4. rank/class:当前已检查长度内无法区分的一类前缀标签。
  5. 倍增:知道长度 k 前缀的 rank 后,长度 2k 前缀可以用 (rank[i], rank[i+k]) 比较。

页面必须反复回答“为什么这一步成立”,而不是只给公式。

交互契约

课程必须提供:

  1. 可编辑字符串输入和紧凑样例。
  2. 可点击字符带。
  3. 排序后缀列表,并高亮“起点”,而不是把后缀复制成主要数据结构。
  4. 构造轮次表,展示起点、后缀、比较键和新 rank。
  5. 带上一步、下一步的微步骤轨道。
  6. 带速度预设和自定义毫秒间隔的自动播放。
  7. 阶段标签,可跳到后缀、字典序、rank、倍增和最终结果的第一个微步骤。
  8. 指向 LCP 书和应用题页的链接,但不在本页展开这些内容。

验收契约

发布前必须验证:

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