看题解发现是我自己读错题了……
一开始以为可以这样:"abc"->"bac"->"cab"->"cba"
然后就卡了一个多小时,wa无数发
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> pii;
typedef long long LL;
const int INF = 0X3f3f3f3f,N = 2e6+10;
int main(){
int test;
cin>>test;
while(test--)
{
bool flag=true;
string s1,s2;
int n;
cin>>n>>s1>>s2;
for(auto c:{'a','b','c'})
if(count(s1.begin(),s1.end(),c)!=count(s2.begin(),s2.end(),c)){
flag=false;
break;
}
vector<char> a(n+1),b(n+1);
for(int i=1;i<=n;i++){
if(s1[i-1]!='b')
a.push_back(s1[i-1]);
if(s2[i-1]!='b')
b.push_back(s2[i-1]);
}
if(a!=b) flag=false;
else{
int x1=0,y1=0,z1=0,x2=0,y2=0,z2=0;
for(int i=0;i<n;i++){
if(s1[i]=='a') x1++;
else if(s1[i]=='b') y1++;
else z1++;
if(s2[i]=='a') x2++;
else if(s2[i]=='b') y2++;
else z2++;
if(x1<x2 || z1>z2) flag=false;
}
}
if(flag) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
原创文章,作者:254126420,如若转载,请注明出处:https://blog.ytso.com/267290.html