CF1822E.Making Anti-Palindromes
普及/提高-
通过率:0%
时间限制:1.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You are given a string s, consisting of lowercase English letters. In one operation, you are allowed to swap any two characters of the string s.
A string s of length n is called an anti-palindrome, if s[i]=s[n−i+1] for every i (1≤i≤n). For example, the strings "codeforces", "string" are anti-palindromes, but the strings "abacaba", "abc", "test" are not.
Determine the minimum number of operations required to make the string s an anti-palindrome, or output −1, if this is not possible.
给你一个由小写英文字母组成的字符串 s。在一次操作中,你可以交换字符串 s 中任意两个字符。
长度为 n 的字符串 s 被称为反回文串(anti-palindrome),当且仅当对每个 i(1≤i≤n),均有 s[i]=s[n−i+1]。例如,字符串 "codeforces"、"string" 是反回文串,但字符串 "abacaba"、"abc"、"test" 不是。
请确定使字符串 s 变为反回文串所需的最少操作次数;若无法实现,则输出 −1。
输入格式
The first line contains a single integer t (1≤t≤104) — the number of test cases. The description of the test cases follows.
Each test case consists of two lines. The first line contains a single integer n (1≤n≤2⋅105) — the length of the string s.
The second line contains the string s, consisting of n lowercase English letters.
The sum of n over all test cases does not exceed 2⋅105.
第一行包含一个整数 t(1≤t≤104)—— 测试用例的数量。随后是各测试用例的描述。
每个测试用例由两行组成。第一行包含一个整数 n(1≤n≤2⋅105)—— 字符串 s 的长度。
第二行包含字符串 s,由 n 个小写英文字母组成。
所有测试用例的 n 值之和不超过 2⋅105。
输出格式
For each test case, output a single integer — the minimum number of operations required to make the string s an anti-palindrome, or −1 if this is not possible.
对于每个测试用例,输出一个整数——使字符串 s 变为反回文串所需的最少操作次数;如果无法实现,则输出 −1。
输入输出样例
输入#1
10 10 codeforces 3 abc 10 taarrrataa 10 dcbdbdcccc 4 wwww 12 cabbaccabaac 10 aadaaaaddc 14 aacdaaaacadcdc 6 abccba 12 dcbcaebacccd
输出#1
0 -1 1 1 -1 3 -1 2 2 2
说明/提示
In the first test case, the string "codeforces" is already an anti-palindrome, so the answer is 0.
In the second test case, it can be shown that the string "abc" cannot be transformed into an anti-palindrome by performing the allowed operations, so the answer is −1.
In the third test case, it is enough to swap the second and the fifth characters of the string "taarrrataa", and the new string "trararataa" will be an anti-palindrome, so the answer is 1.
在第一个测试用例中,字符串 "codeforces" 本身已是一个反回文串,因此答案为 0。
在第二个测试用例中,可以证明字符串 "abc" 无法通过执行允许的操作转变为反回文串,因此答案为 −1。
在第三个测试用例中,只需交换字符串 "taarrrataa" 的第二个字符与第五个字符,即可得到新字符串 "trararataa",该字符串为反回文串,因此答案为 1。
输入解题思路,AI测评打分。不知道怎么写?