密码翻译
描述
最近小明正在整理海牛国的一些文献,由于这些文献和战争有关,都是加密的,于是小明想能不能够通过一些已经解密过的内容来推敲出加密规律,请你帮助小明完成这个任务,给你三个字符串x,y,z;其中y是x加密过后的内容,例如x =“ABC”,y=”XYZ”,那么X解密后是A,Y解密后是B,Z解密后是C,z是待解密的机密文件
day09-03.zip
输入
三行,每行一个字符串,发别是x,y,z(长度小于等于100,只有大写字母)
输出
一个字符串,表示解密后的结果。如果无法翻译,则输出-1.
输入样例 1
ABCDEFG
HIJKLMN
JKL
输出样例 1
CDE
输入样例 2
QWERTYUIOPASDFGHJKLZXCVBN
NBVCXZLKJHGFDSAPOIUYTREWQ
CSP
输出样例 2
RFH
输入样例 3
QWER
ASDFG
ASX
输出样例 3
-1
#include <iostream>
#include <string>
using namespace std;
string decrypt(const string& x, const string& y, const string& z) {
string decrypted = "";
for (char c : z) {
size_t index = y.find(c);
if (index == string::npos) {
return "-1";
}
decrypted += x[index];
}
return decrypted;
}
int main() {
string x, y, z;
cin >> x >> y >> z;
string result = decrypt(x, y, z);
cout << result << endl;
return 0;
}
【以下回答由 GPT 生成】
def decrypt(x, y, z):
# 创建一个字典,存储x和y的对应关系
mapping = {}
for i in range(len(x)):
mapping[y[i]] = x[i]
decrypted = ""
for char in z:
if char not in mapping:
return -1
decrypted += mapping[char]
return decrypted
解释:首先根据给定的x和y,创建一个字典,将x和y的对应关系存储在字典中。然后遍历待解密的机密文件z,将每个字符在字典中查找对应的解密字符,并依次拼接起来。如果待解密的字符在字典中找不到对应关系,则返回-1。最后返回解密后的结果。
【相关推荐】