题解 | #字符串加解密#
字符串加解密
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;
}
查看10道真题和解析