传送门
相当水的一道字符串模拟题目,开个数组存一下对应关系以及判断冲突,最后模拟输出即可,注意一下字符转数字的过程即可
#include <cstdio>
#include <cstring>
#include <algorithm>
const int maxn = 100000 + 5000;
char s1[maxn], s2[maxn], s[maxn];
int vis[30];
int tr[30];
int main () {
scanf("%s %s %s", s1, s2, s);
int len1 = strlen(s1);
for (int i = 0; i < len1; i++) {
int tx = (int)(s1[i] - 'A') + 1;
int ty = (int)(s2[i] - 'A') + 1;
if ((vis[ty] != tx && vis[ty] != 0) || (tr[tx] != ty && tr[tx] != 0)) {
printf("Failed");
exit(0);
}
vis[ty] = tx;
tr[tx] = ty;
}
for (int i = 1; i <= 26; i++)
if (vis[i] == 0) {
printf("Failed");
exit(0);
}
int len = strlen(s);
for (int i = 0; i < len; i++) {
printf("%c", tr[s[i] - 'A' + 1] - 1 + 'A');
}
return 0;
}