CF1379A Acacius and String
题目描述
Acacius 正在研究字符串理论。今天他遇到了如下问题。
给定一个长度为 $n$ 的字符串 $s$,该字符串由小写英文字母和问号组成。你能否将所有问号替换为小写英文字母,使得在最终得到的字符串中,字符串 "abacaba" 作为子串恰好出现一次?
每个问号必须被恰好替换为一个小写英文字母。例如,字符串 "a?b?c" 可以变成 "aabbc" 或 "azbzc",但不能变成 "aabc"、"a?bbc" 或 "babbc"。
长度为 $m$ 的字符串 $t$ 在长度为 $n$ 的字符串 $s$ 中作为子串出现,指存在一个下标 $i$($1 \leq i \leq n - m + 1$),使得 $s[i..i+m-1]$ 这 $m$ 个连续字符组成的字符串等于 $t$。例如,字符串 "ababa" 中,"aba" 作为子串出现了两次,分别在 $i=1$ 和 $i=3$;而在字符串 "acba" 中,"aba" 没有作为子串出现。
请你帮助 Acacius 判断,是否可以将所有问号替换为小写英文字母,使得最终字符串中 "abacaba" 作为子串恰好出现一次。
输入格式
输入的第一行包含一个整数 $T$($1 \leq T \leq 5000$),表示测试用例的数量。接下来有 $T$ 组测试用例,每组测试用例包含两行。
每组测试用例的第一行包含一个整数 $n$($7 \leq n \leq 50$),表示字符串 $s$ 的长度。
每组测试用例的第二行包含一个长度为 $n$ 的字符串 $s$,由小写英文字母和问号组成。
输出格式
对于每个测试用例,输出一行答案。
如果无法将所有问号替换为小写英文字母,使得最终字符串中 "abacaba" 作为子串恰好出现一次,输出 "No"。
否则,输出 "Yes",并在下一行输出一个由 $n$ 个小写英文字母组成的字符串。若有多种可能的字符串,输出任意一种均可。
你可以用任意大小写输出 "Yes" 和 "No"(例如 yEs、yes、Yes、YES 都视为正确答案)。
说明/提示
在第一个样例中,字符串 "abacaba" 作为子串恰好出现一次。
在第二个样例中,七个问号可以替换为任意七个小写英文字母,特别是可以替换为 "abacaba"。
在第六个样例中,字符串 "abacaba" 作为子串出现了两次。
由 ChatGPT 4.1 翻译