分析
其实就是字符映射,如果本来就相等,自然Yes。否则,若对应映射关系满足且至少有一个字符未被映射,则为Yes,否则为No
代码
#define maxn 1010
char a[maxn], b[maxn];
int v[30], d[30];
int main()
{/*
#ifdef ONLINE_JUDGE
freopen("aplusb.in", "r", stdin);
freopen("aplusb.out", "w", stdout);
#endif*/
// ios::sync_with_stdio(false);
int t;
scanf("%d", &t);
while (t--) {
scanf("%s%s", a, b);
if (!strcmp(a, b)) {
puts("YES");
continue;
}
int x = strlen(a), fg = 1;
for (int i = 1; i < x; i++) {
if (b[i] == b[i - 1]) {
if (a[i] != a[i - 1]) {
fg = 0;
break;
}
}
}
if (fg) {
for (int i = 0; i < x; i++) {
v[b[i] - 'a'] = a[i] - 'a';
}
for (int i = 0; i < x; i++) {
if (a[i] != v[b[i] - 'a'] + 'a') {
fg = 0;
break;
}
}
if (fg) {
memset(d, 0, sizeof d);
for (int i = 0; i < x; i++) {
d[b[i] - 'a'] = 1;
}
fg = 0;
for (int i = 0; i < 26; i++) {
if (!d[i]) {
fg = 1;
break;
}
}
if (fg) {
puts("YES");
} else {
puts("NO");
}
} else {
puts("NO");
}
} else {
puts("NO");
}
}
}