题目描述
给出一个长度为n的字符串(1<=n<=100000),求有多少个连续字串中所有的字母都出现了偶数次。
输入
第一行一个正整数T,表示数据组数(1 <= T <= 10)。
接下来T行,每行有一个只包含小写字母的字符串。
输出
每个答案输出满足要求字符串个数。每个答案占一行。
样例输入
3aaabbccabcabc
样例输出
061
这道题用到了字符串的状态压缩
首先来解释一下亦或的用法
举个例子
ababab
首先a^b生成一个状态,然后a^b^a^b生成一个状态,然后a^b^a^b再生成一个状态,此时需要注意了,这个状态就等于0了,因为有a^b^a^b=a^b^b^b=0
然后用map记录mp[0]出现的状态,mp[0]首先初始化为1,这和后面的组合计算有关
比如a^b^a^b,mp[0]首先初始化为1,然后mp[0]++,然后是a^b^a^b^a^b,然后再mp[0]++
此时mp[0]=3,排列组合得到(2+1)(这个就是二倍ab的个数加上三倍ab的个数)
然后由排列组合得到sum=(3*2)/2=3,一共三种。
其他字符串情况依次类推。