CF1617A Forbidden Subsequence
题目描述
给定字符串 $S$ 和 $T$,它们均由小写英文字母组成。保证 $T$ 是字符串 abc 的一个排列。
请你找到字符串 $S'$,即 $S$ 的字典序最小的一个排列,要求 $T$ 不是 $S'$ 的子序列。
字符串 $a$ 是字符串 $b$ 的一个排列,当且仅当每个不同字符在 $a$ 和 $b$ 中出现的次数相同。
字符串 $a$ 是字符串 $b$ 的一个子序列,当且仅当可以通过删除 $b$ 中的若干(可以为零或全部)字符得到 $a$。
字符串 $a$ 的字典序小于字符串 $b$,当且仅当满足以下条件之一:
- $a$ 是 $b$ 的前缀,且 $a \ne b$;
- 在 $a$ 和 $b$ 第一个不同的位置,$a$ 的字母在字母表中比 $b$ 的对应字母更靠前。
输入格式
每组测试包含多个测试用例。第一行包含一个整数 $t$($1 \le t \le 1000$),表示测试用例的数量。接下来是每个测试用例的描述。
每个测试用例的第一行包含一个字符串 $S$($1 \le |S| \le 100$),由小写英文字母组成。
每个测试用例的第二行包含一个字符串 $T$,它是字符串 abc 的一个排列(因此 $|T| = 3$)。
注意所有测试用例中 $|S|$ 的总和没有限制。
输出格式
对于每个测试用例,输出一个字符串 $S'$,即 $S$ 的字典序最小的排列,且 $T$ 不是 $S'$ 的子序列。
说明/提示
在第一个测试用例中,aaaabbc 和 aaaabcb 都比 aaaacbb 字典序小,但它们都包含 abc 作为子序列。
在第二个测试用例中,abccc 是 cccba 的最小排列,且不包含 acb 作为子序列。
在第三个测试用例中,bcdis 是 dbsic 的最小排列,且不包含 bac 作为子序列。
由 ChatGPT 4.1 翻译