#ATarc134b. [ARC134B] Reserve or Reverse
[ARC134B] Reserve or Reverse
题目描述
给定一个长度为 的字符串 。第 个字符记作 。
すぬけ君会按照以下步骤对 进行变换:
- 选择 的一个长度为偶数的(不一定连续)子序列 ( 也可以)。
- 将 与 交换。
- 将 与 交换。
- 将 与 交换。
- 将 与 交换。
请你求出,经过すぬけ君操作后, 可能变成的所有字符串中,字典序最小的字符串。
什么是字典序?字典序简单来说就是“单词在字典中的排列顺序”。更严格地说,判断两个不同字符串 和 的大小的方法如下:
记“ 的第 个字符”为 。若 字典序小于 ,记作 ;若大于,记作 。
- 取 和 中较短的长度为 。依次比较 的 和 是否相同。
- 若存在 ,取最小的此类 为 ,比较 和 。若 的字母序小于 ,则 ,否则 ,算法结束。
- 若所有 ,则比较长度,若 比 短,则 ,否则 ,算法结束。
输入格式
输入从标准输入读入,格式如下:
输出格式
请输出すぬけ君操作后可能得到的所有字符串中字典序最小的一个。
样例 1
输入
4
dcab
输出
acdb
样例 2
输入
2
ab
输出
ab
样例 3
输入
16
cabaaabbbabcbaba
输出
aaaaaaabbbbcbbbc
样例 4
输入
17
snwfpfwipeusiwkzo
输出
effwpnwipsusiwkzo
说明/提示
数据范围
- 是仅由小写英文字母组成的长度为 的字符串
样例解释 1
- 当 时,仅 和 被交换。操作后 变为
acdb,是字典序最小的。
样例解释 2
- 当 时,操作后 仍为
ab,是字典序最小的。注意 的长度为 也是允许的。
由 ChatGPT 4.1 翻译