1 条题解
-
0
题意分析
给出一个26位英文密码,分别对应顺序排列的26个英文字母,大写对应大写字母,小写对应小写。给出一段密文,将其翻译成正确内容。
解题思路
-
建立解密映射表:
密钥key
的每个字符key[i]
对应字母'a' + i
的解密结果。
例如,key = "eydbkmiqugjxlvtzpnwohracsf"
:key[0] = 'e'
→'a'
解密为'e'
key[1] = 'y'
→'b'
解密为'y'
- 以此类推。
-
遍历加密消息:
对每个字符:- 小写字母:直接替换为
key[ch - 'a']
。 - 大写字母:先转换为小写,替换后再转回大写。
- 非字母字符:保持不变。
- 小写字母:直接替换为
标程
#include <iostream> #include <cctype> using namespace std; int main() { string key, message; // 读取解密密钥和加密消息 getline(cin, key); getline(cin, message); // 遍历每个字符进行解密 for (string::size_type i = 0; i < message.length(); ++i) { char ch = message[i]; if (islower(ch)) { // 小写字母:直接替换 message[i] = key[ch - 'a']; } else if (isupper(ch)) { // 大写字母:先转小写,替换后再转回大写 message[i] = toupper(key[tolower(ch) - 'a']); } // 其他字符(如空格)保持不变 } // 输出解密结果 cout << message << endl; return 0; }
-
- 1
信息
- ID
- 1142
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 3
- 已通过
- 1
- 上传者