简单密码

144 阅读1分钟

描述

现在有一种密码变换算法。

九键手机键盘上的数字与字母的对应: 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")