Responsive image

问题 2809 --马学长玩魔术

2809: 马学长玩魔术

时间限制: 1 Sec  内存限制: 128 MB
提交: 0  解决: 43
[提交][状态][讨论版][命题人:]

题目描述

马学长有一个字符串s,它只包含长度为n的0和1。
马学长可以对字符串执行以下称为神奇魔术的操作:
选择一个段[l,r](l≤n<=r)。在此区间内如果si='1'则将1变成0,如果si='0'则将0变为1.
例如,字符串s=010100和段[2,5],在使用神奇魔术后将会是001010。
马学长想要生成一个回文串s,请问执行神奇魔术恰好一次是否有可能。
一个字符串是一个回文,如果它向后读和向前读一样。例如,010010是回文,而10111不是。

输入描述

每个测试包含多个测试用例。第一行包含测试用例的数量t(1≤t≤1e4).

每个测试用例的第一行包含一个整数n(2≤n≤1e5) -字符串的长度s(s中只能出现字符0和1)

每个测试用例的第二行包含一个二进制字符串s长度为n。(最终保证t*n在2e5的范围之内)

输出描述

对于每个测试用例,如果执行神奇魔术恰好一次可以是一个回文后打印YES,否则打印NO。

样例输入

3
4
1001
5
10010
7
0111011

样例输出

YES
YES
NO

提示

在第一个测试用例中,执行神奇魔术[1,4]之后将是0110。 

在第二个测试用例中,段上执行神奇魔术[1,3]之后将是01110 

在第三个测试用例中,不能精确地执行神奇魔术一次来生成回文 

来源

[提交][状态]
ACM算法攻关部