题目分析
正难则反
考虑不是GOOD string的情况,只有
ABB…BBB
BAA…AAA
AAA…AAB
BBB…BBA
然后 用 n*(n-1)/2 减去不满足的情况就可以啦
代码详情
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
int n;
cin>>n;
string s;
cin>>s;
ll len = s.size();
ll cta=0,ctb=0;
int fa=0,fb=0;
ll ans = 0;
for(int i=0;i<len;i++)
{
if(s[i]=='A')
{
cta++;
fa = 1;
if(cta==1&&fb) ans+= ctb;
if(cta>1&&fb) ans++;
ctb=0;
}
else
{
ctb++;
fb = 1;
if(ctb==1&&fa) ans += cta;
if(ctb>1&&fa) ans++;
cta=0;
}
//cout<<"ans= "<<ans<<endl;
}
printf("%I64d\n",len*(len-1)/2-ans);
return 0;
}