CF1730D Prefixes and Suffixes
题目描述
你有两个长度为 $n$ 的字符串 $s_1$ 和 $s_2$,均由小写英文字母组成。你可以进行如下操作任意次(也可以不进行操作):
- 选择一个正整数 $1 \leq k \leq n$。
- 交换字符串 $s_1$ 的前缀和字符串 $s_2$ 的后缀,长度均为 $k$。
你能否通过上述操作使得这两个字符串相等?
输入格式
第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。接下来是 $t$ 组测试数据。
每组测试数据包含三行。
第一行包含一个整数 $n$($1 \le n \le 10^5$),表示字符串 $s_1$ 和 $s_2$ 的长度。
第二行包含一个长度为 $n$ 的字符串 $s_1$,仅包含小写英文字母。
第三行包含一个长度为 $n$ 的字符串 $s_2$,仅包含小写英文字母。
保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。
输出格式
对于每个测试用例,如果可以通过上述操作使两个字符串相等,输出 "YES";否则输出 "NO"。
说明/提示
在第一个测试用例中:
- 初始时 $s_1 = \mathtt{cbc}$,$s_2 = \mathtt{aba}$。
- 选择 $k = 1$ 进行操作后,$s_1 = \mathtt{abc}$,$s_2 = \mathtt{abc}$。
在第二个测试用例中:
- 初始时 $s_1 = \mathtt{abcaa}$,$s_2 = \mathtt{cbabb}$。
- 选择 $k = 2$ 进行操作后,$s_1 = \mathtt{bbcaa}$,$s_2 = \mathtt{cbaab}$。
- 选择 $k = 3$ 进行操作后,$s_1 = \mathtt{aabaa}$,$s_2 = \mathtt{cbbbc}$。
- 选择 $k = 1$ 进行操作后,$s_1 = \mathtt{cabaa}$,$s_2 = \mathtt{cbbba}$。
- 选择 $k = 2$ 进行操作后,$s_1 = \mathtt{babaa}$,$s_2 = \mathtt{cbbca}$。
- 选择 $k = 1$ 进行操作后,$s_1 = \mathtt{aabaa}$,$s_2 = \mathtt{cbbcb}$。
- 选择 $k = 2$ 进行操作后,$s_1 = \mathtt{cbbaa}$,$s_2 = \mathtt{cbbaa}$。
在第三个测试用例中,不可能使两个字符串相等。
由 ChatGPT 4.1 翻译