CF254C Anagram
题目描述
字符串 $x$ 是字符串 $y$ 的“变位词”,如果我们可以重新排列字符串 $x$ 中的字母,恰好得到字符串 $y$。例如,字符串 "DOG" 和 "GOD" 是变位词,"BABA" 和 "AABB" 也是变位词,但 "ABBAC" 和 "CAABA" 并不是变位词。
现在给定两个长度相同、由大写英文字母组成的字符串 $s$ 和 $t$。你需要通过对字符串 $s$ 进行若干次字符替换操作,将其变为字符串 $t$ 的一个变位词。每次操作允许将 $s$ 中的任意一个字符替换为其他任意字符。你需要用最少的替换次数得到 $t$ 的一个变位词。如果有多种方案,在这些最优方案中选择字典序最小的变位词。
字典序的定义是:对于长度相同的字符串 $p$ 和 $q$,如果对于前 $k-1$ 位 $p_1=q_1, p_2=q_2, \ldots, p_{k-1}=q_{k-1}$,且第 $k$ 位有 $p_k
输入格式
输入包含两行。第一行是字符串 $s$,第二行是字符串 $t$。两个字符串长度相同(长度在 $1$ 到 $10^5$ 之间),由大写英文字母组成。
输出格式
第一行输出一个整数 $z$,表示将 $s$ 变为 $t$ 的变位词所需的最少替换次数。第二行输出在 $z$ 次操作后能得到的字典序最小的变位词。
说明/提示
第二个样例中,通过恰好两次替换能从 $s$ 得到 $t$ 的八个变位词,分别是:"ADBADC"、"ADDABC"、"CDAABD"、"CDBAAD"、"CDBADA"、"CDDABA"、"DDAABC"、"DDBAAC"。这些变位词按字典序排列,字典序最小的是 "ADBADC"。
由 ChatGPT 5 翻译