后缀数组入门规格说明
这本书是一个只讲后缀数组本身的单页交互教材。主页面不讲 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。
教学契约
页面面向完全初学者,并解释:
- 后缀:从某个起点一直到结尾的整段。
- 后缀数组:按字典序排好后的后缀起点列表。
- 字典序:先比第一个字符,只有相同才向右继续比。
- rank/class:当前已检查长度内无法区分的一类前缀标签。
- 倍增:知道长度
k前缀的 rank 后,长度2k前缀可以用(rank[i], rank[i+k])比较。
页面必须反复回答“为什么这一步成立”,而不是只给公式。
交互契约
课程必须提供:
- 可编辑字符串输入和紧凑样例。
- 可点击字符带。
- 排序后缀列表,并高亮“起点”,而不是把后缀复制成主要数据结构。
- 构造轮次表,展示起点、后缀、比较键和新 rank。
- 带上一步、下一步的微步骤轨道。
- 带速度预设和自定义毫秒间隔的自动播放。
- 阶段标签,可跳到后缀、字典序、rank、倍增和最终结果的第一个微步骤。
- 指向 LCP 书和应用题页的链接,但不在本页展开这些内容。
验收契约
发布前必须验证:
npm run build通过。npm run check:content通过。npm run check:dist通过。/books/sa/打开无控制台错误。- 步骤轨道、自动播放、速度控制、样例、阶段标签、后缀行和字符带都能改变 页面状态。
/books/sa/en.html能正常打开。