编程题
### 问题描述 在一个遥远的魔法世界,有一种叫做“半回文”的神秘文字,它们的特点就是通过重新排列字母顺序,可以形成回文。例如,文字 "aabb" 就是一个半回文,因为它可以重排成 "abba",构成一个回文。 与此同时,世界上也存在着半回文的对立面——“反回文”。反回文的特点是,无论如何重新排列字母顺序,都无法形成回文。例如,文字 "abc" 就是一个反回文,因为没有任何重排方法能使其变成回文。 魔法少年小然一直对这些神秘的文字充满好奇,他决定挑战一下自己,试图将一个给定的字符串 $S$ 变成反回文。他可以选择一个索引 $i$(满足 $1 \leq i \leq N$),并将 $S_i$ 变成任何其他的英文小写字母。请你帮助小然,找出将字符串 $S$ 变成反回文所需的最少操作次数。 ### 输入格式 输入的第一行包含一个整数 $C$,表示测试用例的数量。 接下来 $C$ 组数据,每组数据包含两行。第一行是一个整数 $N$ — 字符串 $S$ 的长度。第二行是长度为 $N$ 的字符串 $S$。 ### 输出格式 对于每个测试用例,输出将字符串 $S$ 变为反回文所需的最少操作次数。 ### 样例输入 ```text 5 2 ab 2 aa 3 abc 3 aaa 3 abb ``` ### 样例输出 ```text 0 1 0 2 1 ``` ### 说明 测试用例 1:给定的字符串 $S=ab$ 已经是一个反回文,因为没有任何重排方法能使其变成回文。所以,我们不需要进行任何操作,答案为 0。 测试用例 2:给定的字符串 $S=aa$ 是一个回文,因此它不是反回文。我们可以通过 1 次操作将其改变为 $S=ab$,使其成为反回文。因此,答案为 1。 测试用例 3:同测试用例 1,$S=abc$ 已经是反回文,不需要任何操作,答案为 0。 测试用例 4:给定的字符串 $S=aaa$ 是一个回文,因此它不是反回文。我们可以通过 2 次操作将其改变为 $S=abc$,使其成为反回文。因此,答案为 2。 测试用例 5:给定的字符串 $S=abb$ 是一个半回文,因为它可以重排成 $S=bab$,构成一个回文。我们可以通过 1 次操作将其改变为 $S=abc$,使其成为反回文。因此,答案为 1。 ### 评测数据范围 $1 \leq C \leq 10^5$。 $2 \leq N \leq 10^5$。 $S$ 仅包含英文小写字母。 所有测试用例的 $N$ 之和不超过 $10^5$。
查看答案
赣ICP备20007335号-2