网站开发需要配置哪些人员,快速建站公司怎么样,甘肃省省建设厅网站,金诚财富网站是谁做的1、题目
给你字符串 key 和 message #xff0c;分别表示一个加密密钥和一段加密消息。解密 message 的步骤如下#xff1a;
使用 key 中 26 个英文小写字母第一次出现的顺序作为替换表中的字母 顺序 。 将替换表与普通英文字母表对齐#xff0c;形成对照表。 按照对照表 …1、题目
给你字符串 key 和 message 分别表示一个加密密钥和一段加密消息。解密 message 的步骤如下
使用 key 中 26 个英文小写字母第一次出现的顺序作为替换表中的字母 顺序 。 将替换表与普通英文字母表对齐形成对照表。 按照对照表 替换 message 中的每个字母。 空格 ’ ’ 保持不变。 例如key “happy boy”实际的加密密钥会包含字母表中每个字母 至少一次据此可以得到部分对照表‘h’ - ‘a’、‘a’ - ‘b’、‘p’ - ‘c’、‘y’ - ‘d’、‘b’ - ‘e’、‘o’ - ‘f’。 返回解密后的消息。
示例 1 输入key “the quick brown fox jumps over the lazy dog”, message “vkbs bs t suepuv” 输出“this is a secret” 解释对照表如上图所示。 提取 “the quick brown fox jumps over the lazy dog” 中每个字母的首次出现可以得到替换表。
示例 2 输入key “eljuxhpwnyrdgtqkviszcfmabo”, message “zwx hnfx lqantp mnoeius ycgk vcnjrdb” 输出“the five boxing wizards jump quickly” 解释对照表如上图所示。 提取 “eljuxhpwnyrdgtqkviszcfmabo” 中每个字母的首次出现可以得到替换表。
提示
26 key.length 2000 key 由小写英文字母及 ’ ’ 组成 key 包含英文字母表中每个字符‘a’ 到 ‘z’至少一次 1 message.length 2000 message 由小写英文字母和 ’ ’ 组成
2、解
首先预处理密钥key记录每个字母出现的次数如果是第一个出现即为实际密钥遍历message判断是否是字母如果是返回其在实际密钥中的索引位置再将索引位置‘a’即为解密信息如果不是字母直接插入解密信息即可。
string decodeMessage(string key, string message){unordered_mapchar, int keyStatics;string lastK ;for(auto k : key){if(k ) continue;keyStatics[k];if(keyStatics[k] 1) continue;lastK.push_back(k);}string temp ;string mCopey message;message.clear();for(int i 0; i mCopey.length(); i){if(isalpha(mCopey[i])) {int index lastK.find(mCopey[i]);message.push_back(static_castchar(index a));}else message.push_back(mCopey[i]);}return message;}