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 翻译