题解 | #字符串加解密#

字符串加解密

https://www.nowcoder.com/practice/2aa32b378a024755a3f251e75cbf233a

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

//方法一:利用ASCII码循环加解密,fromCharCode以及charCodeAt的使用
void async function () {
    const plainText = await readline();
    const cipherText = await readline();
    //加密
    const encode = (plainText) => {
        let cipherText = "";
        for(const c of plainText){
            if(c>="a"&&c<="z") cipherText += String.fromCharCode("a".charCodeAt()+(c.charCodeAt()-"a".charCodeAt()+1)%26-32);
            else if(c>="A"&&c<="Z") cipherText += String.fromCharCode("A".charCodeAt()+(c.charCodeAt()-"A".charCodeAt()+1)%26+32);
            else if(c>="0"&&c<="9") cipherText += String.fromCharCode("0".charCodeAt() + (c.charCodeAt()-"0".charCodeAt()+1)%10);
        }
        return cipherText;
    }
    //解密
    const decode = (cipherText) => {
        let plainText = "";
        for(const c of cipherText){
            if(c>="a"&&c<="z") plainText += String.fromCharCode("z".charCodeAt()-("z".charCodeAt()-c.charCodeAt()+1)%26-32);
            else if(c>="A"&&c<="Z") plainText += String.fromCharCode("Z".charCodeAt()-("Z".charCodeAt()-c.charCodeAt()+1)%26+32);
            else if(c>="0"&&c<="9") plainText += String.fromCharCode("9".charCodeAt()-("9".charCodeAt()-c.charCodeAt()+1)%10);
        }
        return plainText;
    }
    console.log(encode(plainText));
    console.log(decode(cipherText));
}()

// 方法二:利用map的方式
void (async function () {
    const decodeMap =
        "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    const encodeMap =
        "1234567890BCDEFGHIJKLMNOPQRSTUVWXYZAbcdefghijklmnopqrstuvwxyza";
    const plainText = await readline();
    const cipherText = await readline();
    const encode = (plainText) => {
        let cipherText = "";
        for (const c of plainText) {
            cipherText += encodeMap[decodeMap.indexOf(c)];
        }
        return cipherText;
    };
    const decode = (cipherText) => {
        let plainText = "";
        for (const c of cipherText) {
            plainText += decodeMap[encodeMap.indexOf(c)];
        }
        return plainText;
    };
    console.log(encode(plainText));
    console.log(decode(cipherText));
})();

全部评论

相关推荐

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

创作者周榜

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