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

字符串加密

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;
}

全部评论

相关推荐

一颗宏心:华为HR晚上过了十二点后还给我法消息。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务