题解 | #字符串加密# 笨但简单,两趟构建最终kv表
字符串加密
https://www.nowcoder.com/practice/e4af1fe682b54459b2a211df91a91cf3
#include <cctype> #include <iostream> #include <string> #include <map> #include <vector> using namespace std; int main() { string str1,str2; cin>>str1>>str2; // 第一趟,构建从下方到上方的kv表 map<char,char>kv; int cnt=0; str1+="abcdefghijklmnopqrstuvwxyz";// 保证每个字符都会出现,且按照a-z顺序顺位补充 for(auto&c:str1){ if(kv.find(c)==kv.end()){ char C = toupper(c); //char cc = tolower(c); kv.insert({C,'A'+cnt}); kv.insert({c,'a'+cnt});// 题目说输入的字符串仅小写 ++cnt; } } // 第二趟,构建从上方到下方的kv对应关系,其实到这儿就能用了,就是较为麻烦,所以还有第三趟 vector<pair<char,char>> kv2(kv.begin(),kv.end()); for(auto&a:kv2){ swap(a.first,a.second); } // 第三趟,构建从上方到下方的kv表,这个用起来就很舒服了 map<char,char>kv3(kv2.begin(),kv2.end()); for(auto&c:str2){ cout<<kv3[c]; } return 0; }