题解 | #字符串加密#

字符串加密

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

// 方法一:构造明文ABCDE....对应的密文encode:"NIHAO...."
void async function () {
    //输入
    const key = (await readline()).toUpperCase();
    const code = await readline();

    //处理规则
    let rulers = "",j = 0,k = 0, plain = "";
    const set = new Set(key.split(""));
    for(let i = 0; i < 26; i++){
        plain += String.fromCharCode("A".charCodeAt()+i);
        while(k < key.length && rulers.indexOf(key.charAt(k))!=-1) k++;
        if(k < key.length){
            rulers += key.charAt(k);
        } else {
            while(j < 26 && set.has(String.fromCharCode("A".charCodeAt()+j))) j++;
            rulers += String.fromCharCode("A".charCodeAt()+j++);
        }
    }
    //小写字母表
    plain += plain.toLowerCase();
    rulers += rulers.toLowerCase();

    // 加密
    let encode = "";
    for(const c of code){
        encode += rulers.charAt(plain.indexOf(c));
    }
    console.log(encode);
    // console.log(plain);
    // console.log(rulers);
}()

// 方法二:利用set来构造上述的rulers。大坑:题目的保证输入的字符串中仅包含小写字母
void (async function () {
    //输入
    const key = await readline()
    const code = await readline();
    var line = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toLocaleLowerCase();
    var set = new Set(key + line);
    var rulers = new Array(...set);
    // 加密
    let encode = "";
    for(const c of code){
        encode += rulers[line.indexOf(c)];
    }
    console.log(encode);
})();

全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

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