CF1027A.Palindromic Twist

传统题 时间 2000 ms 内存 256 MiB 5 尝试 1 已通过 1 标签

Palindromic Twist

题目描述

给定一个由 nn 个小写拉丁字母组成的字符串 ss,其中 nn 为偶数。

对于字符串 ss 中的每一个位置 ii1in1 \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" 不是回文串。

你的目标是判断,是否可以通过上述操作将字符串 ss 变为回文串。若可以,输出 "YES";否则输出 "NO"。

每个测试用例包含若干个字符串,对于每个字符串你都需要分别解决该问题。

输入格式

第一行包含一个整数 TT1T501 \le T \le 50),表示该测试用例中字符串的数量。

接下来有 2T2T 行——第 (2i1)(2i-1) 行和第 2i2i 行描述第 ii 个字符串。每对中的第一行包含一个整数 nn2n1002 \le n \le 100,且 nn 为偶数),表示字符串的长度。第二行包含一个长度为 nn 的字符串 ss,由小写拉丁字母组成。

输出格式

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

说明/提示

示例中的第一个字符串可以被更改为 "bcbbcb",最左边的两个字母和最右边的两个字母被更改为下一个字母,中间的两个字母被更改为前一个字母。

第二个字符串可以被更改为 "be"、"bg"、"de"、"dg",但这些结果都不是回文串。

第三个字符串可以被更改为 "beeb",这是一个回文串。

第五个字符串可以被更改为 "lk"、"lm"、"nk"、"nm",但这些结果都不是回文串。注意,不能让某个字母保持不变,因此不能得到 "ll" 或 "mm"。

由 ChatGPT 4.1 翻译

样例

5
6
abccba
2
cf
4
adfa
8
abaazaba
2
ml
YES
NO
YES
NO
NO

在线编程 IDE

建议全屏模式获得最佳体验