#920. 交替字符串
交替字符串
题目描述
我们称一个字符串 是“交替的”,如果对于 到 的每个 ,均满足 。
给定一个仅包含字符 a 和/或 b 的字符串 。你最多可以对该字符串执行一次以下操作:
- 选择一个至少包含一个字符的子串 ;
- 在选择子串后,你可以选择是否将其中的所有字母进行反转(即把所有的
a变为b,把所有的b变为a); - 将选定的子串进行翻转(即将字符串 $s_1 s_2 \dots s_{l-1} s_l s_{l+1} \dots s_r s_{r+1} \dots s_n$ 变换为 $s_1 s_2 \dots s_{l-1} s_r s_{r-1} \dots s_l s_{r+1} \dots s_n$)。
注意:执行操作时,你不一定要进行第二步(反转字母),但必须执行第三步(翻转子串)。例如,对于字符串 ,通过选择子串 并执行第二步,可以得到 ;通过选择子串 且不执行第二步,可以得到 。
请判断是否能够通过上述至多一次操作,使字符串 变为一个“交替”字符串。
输入格式
第一行包含一个整数 ()—— 测试用例的数量。
每个测试用例包含一行,为一个字符串 ()。字符串仅包含小写拉丁字母 a 和/或 b。
所有测试用例中字符串长度之和不超过 。
输出格式
对于每个测试用例,如果能够从 得到交替字符串,输出 YES;否则输出 NO。
样例输入 1
8
abbaba
aaaaa
bababba
ab
abbaabba
bbb
ababa
aabb
样例输出 1
YES
NO
YES
YES
NO
YES
YES
YES
说明
样例解释
- 在第一个样例中,可以选择子串 并不执行第二步,即可得到字符串 。
- 在第三个样例中,可以选择子串 并执行第二步,即可得到字符串 。
- 在第四个样例中,字符串本身已经是交替的。
- 在第六个样例中,可以选择子串 并执行第二步,即可得到字符串 。
数据范围
对于所有测试点,保证:
- 。
- 。
- 所有测试用例中字符串长度之和不超过 。