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

字符串加密

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-10 11:33
点赞 评论 收藏
分享
06-10 21:15
门头沟学院 Java
宁阿:好多这种没🧠的公司,他们估计都不知道毕业的人不能给安排实习岗
实习吐槽大会
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-10 14:00
林子大了什么鸟都有啊,我觉得我说的已经很客气了,阴阳谁呢
牛客62656195...:应该不是阴阳吧?你第一次注册的时候boss就说你是牛人
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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