题解 | #字符串加密#查重表方法

字符串加密

https://www.nowcoder.com/practice/e4af1fe682b54459b2a211df91a91cf3

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;

int main(){    //复杂度:Ot(K+P), Os(1); K-key size, P-plain size
    string key,plain;
    cin>>key>>plain;
    char keyTable[26]={'a'};    //密钥对照表
    bool isInKeyTable[26]={false};    //查重表,用来查一个字符是否已经在密钥对照表中
    
    int keyIndex=0;    //密钥中,去重之后已经存入密钥对照表的长度
    for(int i=0;i<key.size();i++)    //遍历密钥
        if(!isInKeyTable[key[i]-'a'])    //去重:若当前字符在查重表中对应值为假(不在密钥对照表中)
        {
            keyTable[keyIndex++]=key[i];    //则加入密钥对照表
            isInKeyTable[key[i]-'a']=true;    //且在查重表中标为真
        }
    
    for(int i=0;i<26;i++)    //遍历26个字母
        if(!isInKeyTable[i])    //若该字母不在密钥对照表中
            keyTable[keyIndex++]=i+'a';    //则存入密钥对照表keyIndex以后的位置
    
    for(int i=0;i<plain.size();i++)    //遍历明文
        cout<<keyTable[plain[i]-'a'];    //直接对照输出
    
    return 0;
}

全部评论

相关推荐

07-09 12:12
门头沟学院 Java
5月底投简历7月初开奖收获秋招第一个offer,虽然白菜价,但至少能保底了
土木转行ing:土木博士想转图像,最后拿了 tp 提前批 sp 最低档,感觉性价比不高
TP-LINK开奖132人在聊
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-08 12:10
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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