题解 | #字符串加解密#
字符串加解密
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(''); }#一定要审题啊#