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