题解 | #字符串加解密#

字符串加解密

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;

void (async function () {
    const encodes = await readline();
    const decodes = await readline();
    if (encode) {
        console.log(encode(encodes));
    }
    if (decode) {
        console.log(decode(decodes));
    }
})();
const strTable = "abcdefghijklmnopqrstuvwxyz";

// 加密
function encode(str) {
    const encodeArr = str.split("").map((char) => {
        // 如果字符是9就换成0
        if (+char === 9) return 0;
        if (/\d/g.test(char)) return +char + 1;

        // 如果字符是Z时就换成a
        if (char === "Z") return "a";
        if (char === "z") return "A";
        // 如果是英文字母使用一下一个字母
        const charIndex = strTable.indexOf(char.toLowerCase());
        const nextChar = strTable.substr(charIndex + 1, 1);
        if (isUpperCase(char)) {
            return nextChar.toLowerCase();
        } else {
            return nextChar.toUpperCase();
        }
    });
    return encodeArr.join("");
}
// 解密
function decode(str) {
    const decodeArr = str.split("").map((char) => {
        // 如果字符是9就换成0
        if (+char === 0) return 9;
        if (/\d/g.test(char)) return +char - 1;

        if (char === "a") return "Z";
        if (char === "A") return "z";
        // 如果是英文字母使用一下一个字母
        const charIndex = strTable.indexOf(char.toLowerCase());
        const prevChar = strTable.substr(charIndex - 1, 1);
        // console.log(char)
        if (isUpperCase(char)) {
            return prevChar.toLowerCase();
        } else {
            return prevChar.toUpperCase();
        }
    });
    return decodeArr.join("");
}

function isUpperCase(char) {
    // 如果没有找到就是小写
    return strTable.indexOf(char) === -1;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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