题解
2025-04-30 12:58:46
发布于:江苏
0阅读
0回复
0点赞
#include <iostream>
#include <string>
#include <map>
#include <set>
using namespace std;
int main() {
string encrypted, original, toTranslate;
cin >> encrypted >> original >> toTranslate;
map<char, char> cipher;
map<char, char> reverseCipher;
bool failed = false;
for (int i = 0; i < original.size(); ++i) {
char o = original[i];
char e = encrypted[i];
if (cipher.count(o)) {
if (cipher[o] != e) {
failed = true;
break;
}
} else {
if (reverseCipher.count(e)) {
failed = true;
break;
}
cipher[o] = e;
reverseCipher[e] = o;
}
}
if (!failed) {
set<char> originalLetters(original.begin(), original.end());
if (originalLetters.size() != 26) {
failed = true;
}
}
if (!failed) {
string result;
for (char c : toTranslate) {
if (!reverseCipher.count(c)) {
failed = true;
break;
}
result += reverseCipher[c];
}
if (!failed) {
cout << result << endl;
return 0;
}
}
cout << "Failed" << endl;
return 0;
}
这里空空如也
有帮助,赞一个