题目
代码思路
刚开始用暴力做的,拿了10分…后来经过仔细研究发现,不满足条件的字符串一共就几种,只要找到不满足条件的字符串,并用字符串总数 n*(n-1)/2减去其数量就可以算出结果。
不满足条件的字符串:
AA…B;
AB…B;
BB…A;
BA…A
代码实现
#include<iostream>
using namespace std;
long long len,n;
string s;
int main()
{
cin>>n;
cin>>s;
int tmp=0,record=0;
len = n*(n-1)/2;
for(int i=1;i<n;i++)
{
if(s[i]!=s[i-1])
{
len-=(i-tmp);
tmp=i;
record++;
}
}
len+=record;
tmp=n-1;
for(int i=n-2;i>-1;i--)
{
if(s[i]!=s[i+1])
{
len-=(tmp-i);
tmp=i;
}
}
cout<<len;
return 0;
}