描述
现在有一种密码变换算法。
九键手机键盘上的数字与字母的对应: 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
function ceshiPassword(str){
if(str.length<1 || str.length > 100){
return
}
let book = {
2: 'abc',
3: 'def',
4: 'ghi',
5: 'jkl',
6: 'mno',
7: 'pqrs',
8: 'tuv',
9: 'wxyz'
}
let arr = str.split("")
let res = []
for(let i = 0;i<arr.length;i++){
let p1 = /^[a-z]+$/g
let p2 = /^[A-Z]+$/g
if(p1.test(arr[i])){
//此时说明是小写字母
for(let key in book){
if(book[key].indexOf(arr[i]) !== -1){
res.push(key)
}
}
}else if(p2.test(arr[i])){
//说明是大写字母
let newCode = arr[i].toLowerCase()
if(newCode === "z"){
res.push("a")
}else{
res.push(String.fromCharCode(newCode.charCodeAt() + 1))
}
}else{
//说明是其他
res.push(arr[i])
}
}
console.log(res.join(""))
}
ceshiPassword("YUANzhi1987")