[字符串学习笔记] 0. 定义
0.1. 字符集
一个 字符集 \(\Sigma\) 是一个集合,集合内的元素称为 字符。字符集用于表示在字符串中出现字符的范围。
0.2. 字符串
一个字符串 \(s\) 是将 \(n\) 个字符 依次排列 形成的序列,\(n\) 称为 \(s\) 的长度,记为 \(|s|\)。
0.3. 下标
字符串的下标 代表着字符在字符串中的位置。
若下标从 \(1\) 开始,则 \(s\) 的第 \(i\) 位记为 \(s[i]\)。
若下标从 \(0\) 开始,则 \(s\) 的第 \(i\) 位记为 \(s[i - 1]\)。
下文中默认下标从 \(0\) 开始。
0.4. 子串
字符串 \(s\) 的子串是从 \(s\) 中截取的一段 连续字符 组成的序列。
对于 \(0 \leq l \leq r \leq |s| - 1\),子串 \(s[l \ldots r]\) 表示依次排列 \(s[l], s[l + 1], \ldots, s[r]\) 这些字符所得到的字符串。
特别地,若 \(l > r\),则 \(s[l \ldots r]\) 为空串。
0.5. 子序列
字符串 \(s\) 的子序列是从 \(s\) 中提取若干字符,依次排列所组成的序列,即 \(s[p_1], s[p_2], \ldots, s[p_m]\),其中 \(0 \leq p_1 < p_2 < \ldots < p_m \leq |s| - 1\)。
注意子串与子序列 不同 在提取的字符 不一定连续。
0.6. 前缀
字符串 \(s\) 的前缀指其开头至某个位置 \(i\) 的子串,相当于 \(s[0 \ldots i]\)。
真前缀指 \(i \neq |s| - 1\) 的前缀,即不为 \(s\) 本身的前缀。
0.7. 后缀
字符串 \(s\) 的后缀指某个位置 \(i\) 至其结尾的子串,相当于 \(s[i \ldots |s| - 1]\)。
真后缀指 \(i \neq 0\) 的后缀,即不为 \(s\) 本身的后缀。
0.8. 回文串
回文串指反转后与原串 相同 的字符串,即 \(\forall i \in [0, |s| - 1] \cap \mathbb Z\) 都满足 \(s[i] = s[|s| - 1 - i]\) 的 \(s\)。
0.9. 字典序
使用 字典序 比较字符串 \(s, t\) 时,将 \(s[i]\) 与 \(t[i]\) 的比较结果作为第 \(i\) 关键字。空字符小于任何字符,如 \(\texttt a < \texttt{aab} < \texttt{aabb}\)。

浙公网安备 33010602011771号