[字符串学习笔记] 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}\)

posted @ 2024-06-22 12:36  Carrot-Meow~  阅读(52)  评论(0)    收藏  举报