题解 | 字符串加解密
字符串加解密
https://www.nowcoder.com/practice/2aa32b378a024755a3f251e75cbf233a
#include <iostream>
#include <string>
#include <map>
using namespace std;
map<char, char> mtar; // 用于实现加密映射
map<char, char> mpar; // 用于实现解密映射
void init() {
// 加密数字映射
mtar['0'] = '1', mtar['9'] = '0';
for (char ch = '1'; ch <= '8'; ++ch) {
mtar[ch] = ch + 1;
}
// 加密大小写字母映射
for (char ch = 'A'; ch < 'Z'; ch++) {
mtar[ch] = ch + 33;
}
mtar['Z'] = 'a';
for (char ch = 'a'; ch < 'z'; ch++) {
mtar[ch] = ch - 31;
}
mtar['z'] = 'A';
// 解密只需要将加密的键值对反过来就行
for (auto [k, v] : mtar)
mpar[v] = k;
}
void tar(string& s) {
for (auto& elem : s)
elem = mtar[elem];
}
void parse(string& s) {
for (auto& elem : s)
elem = mpar[elem];
}
int main() {
init();
string s1;
string s2;
cin >> s1 >> s2;
tar(s1);
parse(s2);
cout << s1 << endl;
cout << s2 << endl;
return 0;
}
查看16道真题和解析