题目思路:题目大意是,给出一个只有A和B组成的字符串,可以对于AB进行操作,变换成BA,每个下标只能操作一次。这时候可以寻找第一个a和最后一个b的下标,如果都存在并且b的下标大于a的下标,那么答案就是b的下标减去a的下标,实际意义是a和b前一个位置的距离。
比如BBBAAABBABABAAA,
#include<iostream>
#include<algorithm>
#include<string>
#include<map>
using namespace std;
int t,n;
string s;
int main()
{
cin>>t;
while(t--)
{
int l=-1,r=-1;
bool flag=true;
cin>>n;
cin>>s;
for(int i=0;i<n;i++)
{
if(s[i]=='B')//最后一个b
{
r=i;
}
if(s[i]=='A'&&flag)//第一个a
{
l=i;
flag=false;
}
}
if(l>=0&&r>=0&&r>l)
{
cout<<r-l<<endl;
}
else
{
cout<<0<<endl;
}
}
return 0;
}