如题
//SIXIANG
#include <iostream>
#include <string>
#define MAXN 100000
#define QWQ cout << "QWQ" << endl;
using namespace std;
int n;
int main() {
// freopen("date.txt", "r", stdin);
// freopen("out.txt", "w", stdout);
int T; cin >> T;
string in1, in2;
while(T--) {
cin >> n;
string s1 = "", s2 = "";
bool flag = 0;
cin >> in1 >> in2;
int A = 0, B = 0, C = 0;
for(int p = 0; p < in1.size(); p++)
if(in1[p] == 'a') A++;
else if(in1[p] == 'b') B++;
else if(in1[p] == 'c') C++;
for(int p = 0; p < in2.size(); p++)
if(in2[p] == 'a') A--;
else if(in2[p] == 'b') B--;
else if(in2[p] == 'c') C--;
if(A || B || C) {
cout << "NO" << endl;
continue;
}
for(int p = 0; p < n; p++)
if(in1[p] != in2[p])
s1 += in1[p], s2 += in2[p];
int posB = 1145141919;
for(int p = 0; p < s2.size(); p++) {
if(s2[p] == 'b') posB = p;
if(s2[p] == 'a' && posB > p) {
cout << "NO" << endl;
flag = 1;
break;
}
}
if(flag) continue;
posB = -1145141919;
for(int p = s2.size() - 1; p > 0; p--) {
if(s2[p] == 'b') posB = p;
if(s2[p] == 'c' && posB < p) {
cout << "NO" << endl;
flag = 1;
break;
}
}
if(!flag) cout << "YES" << endl;
}
}
这个代码显而易见是假的因为读入串压根就没怎么用(我是什么聪明玩意儿写出来这种东西)
但是自己又 hack 不掉自己/kk
求 hack