观察:满足“相邻字符大小写必须不同”的串,其大小写分布在下标奇偶上必然固定成两种模式之一: 模式 A:下标偶位为大写、奇位为小写; 模式 B:下标偶位为小写、奇位为大写。 因此一个串是“好”,等价于它完全匹配模式 A 或完全匹配模式 B。
“不错”定义为:至多翻转一个字符的大小写后能变成“好”。
设串与两种模式的“失配数”分别为 misA
、misB
,则最少需要的翻转次数为 min(misA, misB)
。
于是:“不错”等价于 min(misA, misB) ≤ 1
;“好”等价于 min(misA, misB) = 0
。
我们称一个只包含英文字母的字符串为好,当且仅当它的相邻字符大小写必须不同;等价地,对于任意相邻的一对字符(如果存在),恰有一个为大写字母、另一个为小写字母。
我们称一个字符串为不错,当且仅当对它其中一个字符至多进行一次大小写翻转(也可以不操作)后,能够变成一个好的字符串。
现在,给定 n 个字符串,请统计其中好的字符串数量,以及不错的字符串数量。
第一行输入一个数 n(1≤n≤2×104),表示字符串的个数。
此后共 n 组数据,每组两行:
第一行输入一个整数 m(1≤m≤10) ,表示字符串长度;
第二行输入一个长度为 m 的字符串 s ,仅由大小写英文字母组成。
在一行上输出两个整数,分别表示好的字符用数量与不错的字符串数量,中间用一个空格隔开。
输入
5
1
a
2
Aa
2
AA
3
abc
4
aBCd
输出
2 4
说明
"a"本身相邻位置不存在,视为满足相邻大小写交替,因此是好串
"Aa"相邻对为大写-小写,故是好串;
“AA"不是好串,但翻转任意一个字符可得"Aa"或"aA”,因此是不错;
"abc"不是好串,但将中间的 b 翻转为 B 可得"aBc”,因此是不错;
"aBCd"至少需要翻转两处才能成为好串,因此不是不错。
最终好串数量为 2 ,不错数量为 4 。