自己推性质的能力是真的差。
-
如果最后一个字符是
A
,那么答案就是A
(分为全是A
和存在B
两种情况证明即可) -
否则如果最后一个字符是
B
,检查是否会变为以A
结尾- 如果原串为
AA...ABB...B
的话,答案为B
- 否则最后的
B
会不断减少直到前面的A
成为最后一个字符
- 如果原串为
做了 1h 才做出来,需要引以为戒。
代码
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const int N=3e5+10;
int T,n;
char a[N];
void get(){
scanf("%d%s",&n,a+1);
int cntB=0,cnt=0;
for(int i=1;i<=n;i++)cntB+=a[i]=='B';
for(int i=1;i<n;i++)cnt+=a[i]!=a[i+1];
if(!cntB)puts("A");
else if(cntB==n)puts("B");
else if(a[n]=='A')puts("A");
else if(cntB>1&&cnt>1&&a[n]=='B')puts("A");
else puts("B");
}
int main(){
freopen(".in","r",stdin);
//freopen(".out","w",stdout);
for(scanf("%d",&T);T--;)get();
return 0;
}
标签:字符,cnt,Right,puts,get,--,Character,int
From: https://www.cnblogs.com/A-zjzj/p/17542025.html