Problem A: 字符串“水”题
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 13 Solved: 6
[ Submit][ Status][ Web Board]
Description
给出一个长度为n的字符串(1<=n<=100000),求有多少个连续字串中所有的字母都出现了偶数次。
Input
第一行一个正整数T,表示数据组数(1 <= T <= 10)。
接下来T行,每行有一个只包含小写字母的字符串。
Output
每个答案输出满足要求字符串个数。每个答案占一行。
Sample Input
3aaabbccabcabc
Sample Output
061
HINT
Append Code
思路:map+位运算
代码:
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+5;
char str[N];
map<int,int> m;
int main()
{
int t;
cin >> t;
while(t--)
{
scanf("%s",str);
int cur = 0;
long long res = 0;
m.clear();
m[0] = 1;
for(int i = 0;str[i] != '\0';i++)
{
cur ^= 1<<(str[i]-'a');
res += m[cur];
m[cur]++;
}
printf("%lld\n",res);
}
return 0;
}