CF1027A Palindromic Twist

题目描述

给定一个由 $n$ 个小写拉丁字母组成的字符串 $s$,其中 $n$ 为偶数。 对于字符串 $s$ 中的每一个位置 $i$($1 \le i \le n$),你需要将该位置的字母更改为字母表中的前一个字母或后一个字母(字母 'a' 和 'z' 只有一个可选项)。每个位置的字母必须且只能被更改一次。 例如,字母 'p' 可以被更改为 'o' 或 'q',字母 'a' 只能被更改为 'b',字母 'z' 只能被更改为 'y'。 例如,字符串 "codeforces" 可以被更改为 "dpedepqbft"('c' $\rightarrow$ 'd','o' $\rightarrow$ 'p','d' $\rightarrow$ 'e','e' $\rightarrow$ 'd','f' $\rightarrow$ 'e','o' $\rightarrow$ 'p','r' $\rightarrow$ 'q','c' $\rightarrow$ 'b','e' $\rightarrow$ 'f','s' $\rightarrow$ 't')。 如果一个字符串从左到右和从右到左读都是一样的,则称其为回文串。例如,"abba" 和 "zz" 是回文串,而 "abca" 和 "zy" 不是回文串。 你的目标是判断,是否可以通过上述操作将字符串 $s$ 变为回文串。若可以,输出 "YES";否则输出 "NO"。 每个测试用例包含若干个字符串,对于每个字符串你都需要分别解决该问题。

输入格式

第一行包含一个整数 $T$($1 \le T \le 50$),表示该测试用例中字符串的数量。 接下来有 $2T$ 行——第 $(2i-1)$ 行和第 $2i$ 行描述第 $i$ 个字符串。每对中的第一行包含一个整数 $n$($2 \le n \le 100$,且 $n$ 为偶数),表示字符串的长度。第二行包含一个长度为 $n$ 的字符串 $s$,由小写拉丁字母组成。

输出格式

输出 $T$ 行。第 $i$ 行输出第 $i$ 个字符串的答案。如果可以通过上述操作将第 $i$ 个字符串变为回文串,输出 "YES";否则输出 "NO"。

说明/提示

示例中的第一个字符串可以被更改为 "bcbbcb",最左边的两个字母和最右边的两个字母被更改为下一个字母,中间的两个字母被更改为前一个字母。 第二个字符串可以被更改为 "be"、"bg"、"de"、"dg",但这些结果都不是回文串。 第三个字符串可以被更改为 "beeb",这是一个回文串。 第五个字符串可以被更改为 "lk"、"lm"、"nk"、"nm",但这些结果都不是回文串。注意,不能让某个字母保持不变,因此不能得到 "ll" 或 "mm"。 由 ChatGPT 4.1 翻译