題目分析
正難則反
考慮不是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;
}