CF1796B Asterisk-Minor Template

题目描述

给定两个仅由小写拉丁字母组成的字符串 $a$ 和 $b$。 一个模板 $t$ 是仅由小写拉丁字母和星号(字符 '\*')组成的字符串。如果模板中星号的数量不超过字母的数量,则称其为“星号-次要模板”。 如果可以将模板 $t$ 中的每个星号替换为任意小写拉丁字母组成的字符串(可以为空串),使其变为字符串 $s$,则称字符串 $s$ 匹配模板 $t$。 请你构造一个星号-次要模板,使得 $a$ 和 $b$ 都能匹配该模板,或者报告不存在这样的模板。如果有多个答案,输出任意一个即可。

输入格式

第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。 每个测试用例的第一行包含一个字符串 $a$($1 \le |a| \le 50$,其中 $|a|$ 表示 $a$ 的长度),仅包含小写拉丁字母。 第二行包含一个字符串 $b$($1 \le |b| \le 50$),仅包含小写拉丁字母。

输出格式

对于每个测试用例,如果不存在一个星号-次要模板使得 $a$ 和 $b$ 都能匹配,输出一行 "NO"。 否则,第一行输出 "YES",第二行输出任意一个满足条件的模板。模板只能包含小写拉丁字母和星号(字符 '\*'),且星号数量不超过字母数量。

说明/提示

在第一个测试用例中,对于模板 "\*b",你可以将唯一的星号替换为 "aaa" 得到 "aaab"(等于 $a$),或替换为 "zzz" 得到 "zzzb"(等于 $b$)。 在第三个测试用例中,模板 "\*o\*" 不是星号-次要模板,因为它包含的星号数量多于字母数量。不存在能同时匹配 $a$ 和 $b$ 的星号-次要模板。 在第四个测试用例中,对于模板 "a\*a\*a\*a",你可以将所有星号替换为空串得到 "aaaa"(等于 $a$),或将其中两个星号替换为 "a",其余两个替换为空串得到 "aaaaaa"(等于 $b$)。 在第五个测试用例中,模板 "abcd" 中没有星号,因此只有 "abcd" 能匹配它(恰好 $a$ 和 $b$ 都等于 "abcd")。 由 ChatGPT 4.1 翻译