题解 | #字符串加解密#
字符串加解密
http://www.nowcoder.com/practice/2aa32b378a024755a3f251e75cbf233a
- 思路很简单啦,就是按题目要求给出了加解密的函数;
- str.charCodeAt(0)可以获得ascii码;String.fromCharCode()可以由Ascii码获得字符
- 我一开始算错了,我记得A的ascii码是65,然后算Z是65+26==91,但其实是90
function addPassword (str) {
// 创建一个数组接收加密后的字符
let arr = new Array(str.length).fill(-1)
for (let i = 0; i < str.length; i++) {
let code = str[i].charCodeAt(0)
if (code >= 65 && code <= 89) {
arr[i] = (String.fromCharCode(code + 33))
} else if (code >= 97 && code <= 121) {
arr[i] = (String.fromCharCode(code - 31))
} else if (parseInt(str[i]) >= 0 && parseInt(str[i]) <= 9){
arr[i] = ((parseInt(str[i]) + 1) % 10)
} else if (code === 90) {
arr[i] = ('a')
} else if (code === 122) {
arr[i] = ('A')
}
}
return arr.join('')
}
function unPassword (str) {
// 创建一个数组接收加密后的字符
let arr = new Array(str.length)
for (let i = 0; i < str.length; i++) {
let code = str[i].charCodeAt(0)
if (code >= 66 && code <= 90) {
arr[i] = (String.fromCharCode(code + 31))
} else if (code >= 98 && code <= 122) {
arr[i] = (String.fromCharCode(code - 33))
} else if (parseInt(str[i]) >= 0 && parseInt(str[i]) <= 9){
arr[i] = ((parseInt(str[i]) + 9) % 10)
} else if (code === 65) {
arr[i] = ('z')
} else if (code === 97) {
arr[i] = ('Z')
}
}
return arr.join('')
}
console.log(addPassword(readline()))
console.log(unPassword(readline()))