题目描述
给你一个长度为 $N$ 的字符串 $S$ ,由 `A`、`B`、`C` 组成。
您可以按照任意顺序对 $S$ 进行以下两种运算。
- 在 $S$ 中选择 `A`,删除它,并在该位置插入 `BB`。
- 在 $S$ 中选择两个相邻的`BB`字符,删除它们,并在该位置插入`A`。
找出经过上述操作后, $S$ 在词法上可能变成的最小字符串。
词典顺序是什么?
简单地说,词典顺序就是单词在词典中的排列顺序。作为更正式的定义,下面是确定不同字符串 $S$ 和 $T$ 之间的词序的算法。
下面,让 $S_i$ 表示 $S$ 的 $i$ -th 字符。另外,如果 $S$ 在词法上小于 $T$ ,我们将用 $S \lt T$ 表示;如果 $S$ 在词法上大于 $T$ ,我们将用 $S \gt T$ 表示。
1. 设 $L$ 是 $S$ 和 $T$ 长度中较小的一个。对于每一个 $i=1,2,\dots,L$ ,我们检查 $S_i$ 和 $T_i$ 是否相同。
2. 如果有一个 $i$ 与 $S_i \neq T_i$ 相同,则让 $j$ 成为最小的 $i$ 。然后,我们比较 $S_j$ 和 $T_j$ 。如果按字母顺序 $S_j$ 早于 $T_j$ ,则确定 $S \lt T$ ,并放弃;如果 $S_j$ 晚于 $T_j$ ,则确定 $S \gt T$ ,并放弃。
3. 如果 $S_i \neq T_i$ 中没有 $i$ ,则比较 $S$ 和 $T$ 的长度。如果 $S$ 短于 $T$ ,则确定 $S \lt T$ ,并放弃;如果 $S$ 长于 $T$ ,则确定 $S \gt T$ ,并放弃。
输入
- $1 \leq N \leq 200000$
- $S$ 是长度为 $N$ 的字符串,由 `A`、`B`、`C` 组成。
提示
样例输出
```
CAAB
```
我们应该这样做
- 最初,我们有 $S=$ `CBAA`。
- 删除 $3$ (rd)字符 "A",插入 "BB",得到 $S=$ `CBBBA`。
- 删除 $2$ -nd和 $3$ -rd字符`BB`,插入`A`,得到 $S=$ `CABA`。
- 删除 $4$ -th字符 "A",并插入 "BB",组成 $S=$ `CABBB`。
- 删除 $3$ -rd和 $4$ -th字符`BB`,插入`A`,得到 $S=$ `CABAB`。
我们无法使 $S$ 在词法上小于 `CAAB`。因此,答案是 `CAAB`。