#include <bits/stdc++.h>
#define N 500505
using namespace std;
int n, m, i, j, k, b, v[N], c[N];
char t, s[500050];
long long ans;
int main(){
    scanf("%s", s+1);
    n = strlen(s+1);
    for(c[0]=i=1; i<=n; i++){
        v[i] = v[i-1] ^ (1 << s[i]-48);//10个数字出现状态前缀和
        ans += c[v[i]], c[v[i]]++;//区间数字均为偶数,异或和为0
    }
//  for(i=1; i<=n; i++){
//      for(b=j=0; j<=9; j++) c[j] = 0;
//      for(j=i; j<=n; j++){
//          t = s[j] - 48;
//          if(++c[t] & 1) b++;
//          else if(--b == 0) m++;
//          if(b == 0) printf("%d %d\n", i, j);
//      }
//  }
    printf("%lld\n", ans);
    return 0;
}

作者 crxis

发表回复