题解 | #字符串加解密 node环境解法#
字符串加解密
https://www.nowcoder.com/practice/2aa32b378a024755a3f251e75cbf233a
很多题目没有node的题解,贡献一道题解,但是没有写解题思路,解题思路还是挺直观的。
const readline = require('readline')
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
function test(s1,s2){
let res1 = ''
let res2 = ''
for(let i=0;i<s1.length;i++){
if(Number(s1[i]) || s1[i] === '0'){
if(Number(s1[i]) === 9){
res1 += '0'
}else{
let temp = Number(s1[i])
res1 += temp + 1
}
}else{
// 首先判断字母是大写还是小写,因为要转换大小写
if(/[a-z]/.test(s1[i])){ // 如果是小写字符走这条逻辑
let n = s1[i].toUpperCase().charCodeAt()
if(n === 90){
res1 += 'A'
}else{
res1 += String.fromCharCode(n+1)
}
}else{ // 大写字符走这条逻辑
let n = s1[i].toLowerCase().charCodeAt()
if(n === 122){
res1 += 'a'
}else{
res1 += String.fromCharCode(n+1)
}
}
}
}
for(let i=0;i<s2.length;i++){
if(Number(s2[i]) || s2[i] === '0'){
if(Number(s2[i]) === 0){
res2 += '9'
}else{
let temp = Number(s2[i])
res2 += temp - 1
}
}else{
// 首先判断该字符是大写还是小写
if(/[a-z]/.test(s2[i])){ // 如果小写走这条逻辑
let n = s2[i].toUpperCase().charCodeAt()
if(n === 65){
res2 += 'Z'
}else{
res2 += String.fromCharCode(n - 1)
}
}else{ // 大写走这条逻辑
let n = s2[i].toLowerCase().charCodeAt()
if(n === 97){
res2 += 'z'
}else{
res2 += String.fromCharCode(n - 1)
}
}
}
}
console.log(res1)
console.log(res2)
}
const arr = []
rl.on('line',function(line){
arr.push(line)
})
rl.on('close',function(){
test(arr[0],arr[1])
// 可以使用字符串的charCodeAt来判断字符的ASCII码,这道题主要用到的方法就是charCodeAt,String.fromCharCode
// console.log(String.fromCharCode('A'.charCodeAt()))
// console.log('A'.charCodeAt())
// console.log('Z'.charCodeAt())
// console.log('a'.charCodeAt())
// console.log('z'.charCodeAt())
})
腾讯成长空间 5960人发布