题解 | #字符串加解密#
字符串加解密
http://www.nowcoder.com/practice/2aa32b378a024755a3f251e75cbf233a
发现好多都没有Node的题解
不难,用正则表达式暴力解出
// 英文字母 后一个字母替换,字母变换大小写
// 字母a时则替换为B,字母Z时则替换为a;
// 当内容是数字时则把该数字加1
// 如0替换1,1替换2,9替换0;
// 解密方法为加密的逆过程。
const readline = require("readline");
let lines = [];
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.on("line", function (line) {
lines.push(line);
if (lines.length == 2) {
let encode = lines[0].split("");
let decode = lines[1].split("");
let encodeOut = ""
let decodeOut = ""
// 对于单个的letter来说
encode.forEach((value,idx)=>{
encodeOut = encodeOut + encoder(value)
})
decode.forEach((value,idx)=>{
decodeOut = decodeOut + decoder(value)
})
console.log(encodeOut)
console.log(decodeOut)
}
});
function encoder(letter) {
if (/[a-z]/.test(letter)) {
// 小写英文字母时
if (letter == "z") {
return "A";
} else {
let unicode = letter.charCodeAt();
unicode = unicode + 1;
return String.fromCharCode(unicode).toUpperCase();
}
}else if(/[A-Z]/.test(letter)){
if(letter == 'Z'){
return 'a'
} else {
let unicode = letter.charCodeAt()
unicode = unicode +1
return String.fromCharCode(unicode).toLowerCase();
}
}else if(/[0-9]/.test(letter)){
if(letter == '9'){
return '0'
} else {
let output = Number(letter)+1
return output
}
}
}
function decoder(letter) {
if (/[a-z]/.test(letter)) {
// 小写英文字母时
if (letter == "a") {
return "Z";
} else {
let unicode = letter.charCodeAt();
unicode = unicode - 1;
return String.fromCharCode(unicode).toUpperCase();
}
}else if(/[A-Z]/.test(letter)){
if(letter == 'A'){
return 'z'
} else {
let unicode = letter.charCodeAt()
unicode = unicode -1
return String.fromCharCode(unicode).toLowerCase();
}
}else if(/[0-9]/.test(letter)){
if(letter == '0'){
return '9'
} else {
let output = Number(letter)-1
return output
}
}
}