题解 | #字符串加解密#

字符串加解密

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

const rl = require("readline").createInterface({ input: process.stdin });

let arr = []
rl.on('line',function(line){
  arr.push(line)
})
rl.on('close', function() {
    encryptionOrNoFun(arr[0], arr[1])
})

const reg = /^\d+$/; // 设置数字正则
const regL = /^[a-z]+$/; // 设置大小写正则

function encryptionOrNoFun(eCode, dCode) {
    // 加密第一个参数
    // const reg = /^\d+$/; // 设置数字正则
    // const regL = /^[a-z]+$/; // 设置大小写正则
    // 定义结果集
    let [resE, resD] = ['', ''];
    // 第一次理解错题意了,只考虑一个字符串中,单纯只有数字、大写、小写
    // 处理加密
    // if(reg.test(eCode)) {
    //     // 数字场合
    //     const eNumArr = eCode.toString().split('');
    //     resE = eNumArr.map(itemNE => {
    //         return itemNE === '9' ? '0' : (parseInt(itemNE) + 1).toString()
    //     }).join('')
    // } else {
    //     // 字母场合
    //     if(regL.test(eCode)) {
    //         // 小写场合
    //         const elStrArr = eCode.split('');
    //         resE = elStrArr.map(itemLSE => {
    //             return itemLSE === 'z'
    //                 ?
    //                 'A'
    //                 :
    //                 String.fromCharCode(itemLSE.toUpperCase().charCodeAt() + 1);
    //         }).join('');
    //     } else {
    //         // 大写场合
    //         const eUStrArr = eCode.split('');
    //         resE = eUStrArr.map(itemUSE => {
    //             return itemUSE === 'Z'
    //                 ?
    //                 'A'
    //                 :
    //                 String.fromCharCode(itemUSE.toLowerCase().charCodeAt() + 1);
    //         }).join('');
    //     }
    // }

    // if(reg.test(dCode)) {
    //     // 数字场合
    //     const dNumArr = dCode.toString().split('');
    //     resD = dNumArr.map(itemND => {
    //         return itemND === '0' ? '9' : (parseInt(itemND) - 1).toString()
    //     }).join('')
    // } else {
    //     // 字母场合
    //     if(regL.test(dCode)) {
    //         // 小写场合
    //         const dlStrArr = dCode.split('');
    //         resD = dlStrArr.map(itemLSD => {
    //             return itemLSD === 'a'
    //                 ?
    //                 'Z'
    //                 :
    //                 String.fromCharCode(itemLSD.toUpperCase().charCodeAt() - 1);
    //         }).join('');
    //     } else {
    //         // 大写场合
    //         const dUStrArr = dCode.split('');
    //         resD = dUStrArr.map(itemUSD => {
    //             return itemUSD === 'A'
    //                 ?
    //                 'z'
    //                 :
    //                 String.fromCharCode(itemUSD.toLowerCase().charCodeAt() - 1);
    //         }).join('');
    //     }
    // }

    // 第二次,干脆拆分了加密解密方法,并将正则提升为全局变量
    // 加空字符串直接强转类型
    resE = upCode(eCode + '');
    resD = unCode(dCode + '');

    // 打印结果
    console.log(resE)
    console.log(resD)
}

// 加密
function upCode(str) {
    const earr = (str).split('');
    return earr.map(item => {
        let tempN = '';
        if (reg.test(item)) {
            // 数字场合
            tempN = item === '9' ? '0' : (parseInt(item) + 1).toString();
        } else {
            // 字符
            if(regL.test(item)) {
                tempN = item === 'z' ? 'A' : String.fromCharCode((item.toUpperCase().charCodeAt() + 1));
            } else {
                tempN = item === 'Z' ? 'a' : String.fromCharCode((item.toLowerCase().charCodeAt() + 1));
            }
        }
        return tempN;
    }).join('');
}

// 解密
function unCode(str) {
    const darr = (str).split('');
    return darr.map(item => {
        let tempN = '';
        if (reg.test(item)) {
            // 数字场合
            tempN = item === '0' ? '9' : (parseInt(item) - 1).toString();
        } else {
            // 字符
            if(regL.test(item)) {
                tempN = item === 'a' ? 'Z' : String.fromCharCode((item.toUpperCase().charCodeAt() - 1));
            } else {
                tempN = item === 'A' ? 'z' : String.fromCharCode((item.toLowerCase().charCodeAt() - 1));
            }
        }
        return tempN;
    }).join('');
}

#一定要审题啊#
全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务