算法
我们可以打两张表来建立明文与密文之间的联系,如果密文匹配了多个密文则直接输出Failed并结束程序,另外匹配完成以后,如果还有密文没有得到匹配,同样也是直接输出Failed并结束程序!
C++ 代码
#include <iostream>
#include <cstring>
using namespace std;
string x, y;
char a[100], b[100];
int len, cnt;
int main() {
memset(a, '?', sizeof a);
memset(b, '?', sizeof b);
cin >> x >> y;
len = x.length();
for (int i = 0; i < len; i++) {
if (a[x[i]] == '?' && b[y[i]] == '?') {
a[x[i]] = y[i];
b[y[i]] = x[i];
cnt++;
}
else if (a[x[i]] != y[i]){
cout << "Failed";
return 0;
}
}
if (cnt < 26) {
cout << "Failed";
return 0;
}
string t;
cin >> t;
for (int i = 0; i < t.length(); i++) {
cout << a[t[i]];
}
return 0;
}
这是我见到的memset第一次发挥它原本应有的作用