CF1616B Mirror in the String
题目描述
你有一个字符串 $s_1 s_2 \ldots s_n$,你站在字符串的左侧向右看。你想选择一个下标 $k$($1 \le k \le n$),并在第 $k$ 个字母后面放置一面镜子,这样你看到的字符串就是 $s_1 s_2 \ldots s_k s_k s_{k-1} \ldots s_1$。你能看到的字典序最小的字符串是什么?
字符串 $a$ 的字典序小于字符串 $b$ 当且仅当满足以下条件之一:
- $a$ 是 $b$ 的前缀,且 $a \ne b$;
- 在 $a$ 和 $b$ 第一个不同的位置,$a$ 的字母在字母表中比 $b$ 的对应字母更靠前。
输入格式
输入的第一行包含一个整数 $t$($1 \leq t \leq 10\,000$),表示测试用例的数量。
接下来的 $t$ 组,每组包含两行。
第一行给出一个整数 $n$($1 \leq n \leq 10^5$),表示字符串的长度。
第二行包含一个由 $n$ 个小写英文字母组成的字符串 $s$。
保证所有测试用例中 $n$ 的总和不超过 $10^5$。
输出格式
对于每个测试用例,输出你能看到的字典序最小的字符串。
说明/提示
- 第一个测试用例选择 $k=1$,得到 "cc"。
- 第二个测试用例选择 $k=3$,得到 "cbaabc"。
- 第三个测试用例选择 $k=1$,得到 "aa"。
- 第四个测试用例选择 $k=1$,得到 "bb"。
由 ChatGPT 4.1 翻译