题目描述
现在有一种密码变换算法。
九键手机键盘上的数字与字母的对应: 1--1, abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0,把密码中出现的小写字母都变成九键键盘对应的数字,如:a 变成 2,x 变成 9.
而密码中出现的大写字母则变成小写之后往后移一位,如:X ,先变成小写,再往后移一位,变成了 y ,例外:Z 往后移是 a 。
数字和其它的符号都不做变换。
数据范围:
输入的字符串长度满足 1 \le n \le 100 \1≤n≤100
输入描述:
输入一组密码,长度不超过100个字符。
输出描述:
输出密码变换后的字符串
示例1
输入:
YUANzhi1987
输出:
zvbo9441987
const rl = require("readline").createInterface({ input: process.stdin });
rl.on('line',function(data){
const result= []
const input = data.split('')
// 以索引代替对应的数字
let myKey = ['0','1','abc','def','ghi','jkl','mno','pqrs','tuv','wxyz']
input.forEach((item,index)=>{
let charCode = item.charCodeAt()
// 如果是小写则判断是数组中哪个
// console.log(item+'---'+charCode)
if(charCode>=97) {
for(let i =0;i<myKey.length;i++) {
if(myKey[i].includes(item)){
result.push(i)
break;
}
}
}
// 如果是数字的ascii码则不做转换
else if(charCode>=48 && charCode<=57){
result.push(item)
}
// 字母'A'对应65,'a'对应97 中间差距为32,加1则是33
else{
if(item==='Z'){
result.push('a')
}
else{
result.push(String.fromCharCode(charCode+33))
}
}
})
console.log(result.join(''))
})
标签:const,数字,item,--,密码,大小写,字符串,charCode,刷题
From: https://www.cnblogs.com/zx529/p/16746782.html