Unverified Commit 39eed989 authored by ir1d's avatar ir1d Committed by GitHub
Browse files

chore(string): update index.md ; move old index to basic (#1867)

chore(string): update index.md ; move old index to basic
parents d5b4737a 04efe5cf
Loading
Loading
Loading
Loading

docs/string/basic.md

0 → 100644
+45 −0
Original line number Diff line number Diff line
author: Ir1d, ouuan, qinggniq, i-Yirannn

## 定义

### 字符集

一个 **字符集**  $\Sigma$ 是一个建立了全序关系的集合,也就是说, $\Sigma$ 中的任意两个不同的元素 $\alpha$ 和 $\beta$ 都可以比较大小,要么 $\alpha<\beta$ ,要么 $\beta<\alpha$ 。字符集 $\Sigma$ 中的元素称为字符。

### 字符串

一个 **字符串**  $S$ 是将 $n$ 个字符顺次排列形成的序列, $n$ 称为 $S$ 的长度,表示为 $|S|$ 。 $S$ 的第 $i$ 个字符表示为 $S[i]$ 。(在有的地方,也会用 $S[i-1]$ 表示第 $i$ 个字符。)

### 子串

字符串 $S$ 的 **子串**  $S[i..j],i≤j$ ,表示 $S$ 串中从 $i$ 到 $j$ 这一段,也就是顺次排列 $S[i],S[i+1],\ldots,S[j]$ 形成的字符串。

有时也会用 $S[i..j]$ , $i>j$ 来表示空串。

### 子序列

字符串 $S$ 的 **子序列** 是从 $S$ 中将若干元素提取出来并不改变相对位置形成的序列,即 $S[p_1],S[p_2],\ldots,S[p_k]$ , $1\le p_1< p_2<\cdots< p_k\le|S|$ 。

### 后缀

 **后缀** 是指从某个位置 $i$ 开始到整个串末尾结束的一个特殊子串。字符串 $S$ 的从 $i$ 开头的后缀表示为 $Suffix(S,i)$ ,也就是 $Suffix(S,i)=S[i..|S|]$ 。

 **真后缀** 指除了 $S$ 本身的 $S$ 的后缀。

### 字典序

以第 $i$ 个字符作为第 $i$ 关键字进行大小比较,空字符小于字符集内任何字符(即: $a< aa$ )。

### 回文串

 **回文串** 是正着写和倒着写相同的字符串,即满足 $\forall 1\le i\le|s|, s[i]=s[|s|+1-i]$ 的 $s$ 。

## 字符串的存储

1.  使用 `char` 数组存储,用空字符 `\0` 表示字符串的结尾。(C 风格字符串)
2.  使用 C++ 标准库提供的 [ `string` 类](../lang/csl/string.md)
3.  字符串常量可以用字符串字面值(用双引号括起来的字符串)表示。

## 参考资料

 [后缀数组 by. 徐智磊](https://wenku.baidu.com/view/0dc03d2b1611cc7931b765ce0508763230127479.html) 
+2 −42
Original line number Diff line number Diff line
## 定义
字符串,就是由字符连接而成的序列。

### 字符集

一个 **字符集**  $\Sigma$ 是一个建立了全序关系的集合,也就是说, $\Sigma$ 中的任意两个不同的元素 $\alpha$ 和 $\beta$ 都可以比较大小,要么 $\alpha<\beta$ ,要么 $\beta<\alpha$ 。字符集 $\Sigma$ 中的元素称为字符。

### 字符串

一个 **字符串**  $S$ 是将 $n$ 个字符顺次排列形成的序列, $n$ 称为 $S$ 的长度,表示为 $|S|$ 。 $S$ 的第 $i$ 个字符表示为 $S[i]$ 。(在有的地方,也会用 $S[i-1]$ 表示第 $i$ 个字符。)

### 子串

字符串 $S$ 的 **子串**  $S[i..j],i≤j$ ,表示 $S$ 串中从 $i$ 到 $j$ 这一段,也就是顺次排列 $S[i],S[i+1],\ldots,S[j]$ 形成的字符串。

有时也会用 $S[i..j]$ , $i>j$ 来表示空串。

### 子序列

字符串 $S$ 的 **子序列** 是从 $S$ 中将若干元素提取出来并不改变相对位置形成的序列,即 $S[p_1],S[p_2],\ldots,S[p_k]$ , $1\le p_1<p_2<\cdots<p_k\le|S|$ 。

### 后缀

 **后缀** 是指从某个位置 $i$ 开始到整个串末尾结束的一个特殊子串。字符串 $S$ 的从 $i$ 开头的后缀表示为 $Suffix(S,i)$ ,也就是 $Suffix(S,i)=S[i..|S|]$ 。

 **真后缀** 指除了 $S$ 本身的 $S$ 的后缀。

### 字典序

以第 $i$ 个字符作为第 $i$ 关键字进行大小比较,空字符小于字符集内任何字符(即: $a<aa$ )。

### 回文串

 **回文串** 是正着写和倒着写相同的字符串,即满足 $\forall 1\le i\le|s|, s[i]=s[|s|+1-i]$ 的 $s$ 。

## 字符串的存储

1.  使用 `char` 数组存储,用空字符 `\0` 表示字符串的结尾。(C 风格字符串)
2.  使用 C++ 标准库提供的 [ `string` 类](../lang/csl/string.md)
3.  字符串常量可以用字符串字面值(用双引号括起来的字符串)表示。

## 参考资料

 [后缀数组 by. 徐智磊](https://wenku.baidu.com/view/0dc03d2b1611cc7931b765ce0508763230127479.html) 
常见的字符串问题包括字符串匹配问题、子串相关问题、前缀/后缀相关问题、回文串相关问题、子序列相关问题等。
+1 −1
Original line number Diff line number Diff line
## 一些约定

字符串相关的定义请参考 [字符串部分简介](./index.md)
字符串相关的定义请参考 [字符串基础](./basic.md)

字符串下标从 $1$ 开始。

+1 −0
Original line number Diff line number Diff line
@@ -152,6 +152,7 @@ nav:
    - 其它 DP 方法: dp/misc.md
  - 字符串:
    - 字符串部分简介: string/index.md
    - 字符串基础: string/basic.md
    - 标准库: string/lib-func.md
    - 字符串匹配: string/match.md
    - 字符串哈希: string/hash.md