题解 | #字符串加密# 笨但简单,两趟构建最终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;
}

全部评论

相关推荐

06-19 19:06
门头沟学院 Java
码农索隆:别去东软,真学不到东西,真事
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务