【简单】算法nodeJs:简单密码

139 阅读1分钟

描述

规定这样一种密码的变换方法:

∙对于密码中的小写字母,参考九键手机键盘,将它们映射为对应的数字,具体地,abc 对应数字 2 、def 对应数字 3 、ghi 对应数字 4 、jkl 对应数字 5 、mno 对应数字 6 、pqrs 对应数字 7 、tuv 对应数字 8 、wxyz 对应数字 9 ;

∙对于密码中的大写字母,先将其转换为小写,然后向后移动一位,即 Z 转换为 a ,A 转换为 b ,B 转换为 c ,⋯ ,Y 转换为 z ,Z 转换为 a 。

∙对于密码中的数字,保持不变。

现在,请你将给定的密码按照上述规则进行变换。

输入描述:

在一行上输入一个长度为 1≦length(s)≦100 的字符串 s ,代表给定的密码。

输出描述:

在一行上输出一个字符串,代表变换后的密码。

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
    while ((line = await readline())) {
        var o = [
            "0",
            "1",
            "abc",
            "def",
            "ghi",
            "jkl",
            "mno",
            "pqrs",
            "tuv",
            "wxyz",
        ];
        var arr = line.split("");
        for (var i = 0; i < arr.length; i++) {
            if (/[a-z]/.test(arr[i])) {
                arr[i] = o.indexOf(
                    o.find((item1) => item1.indexOf(arr[i]) > -1)
                );
            }
            if (/[A-Z]/.test(arr[i])) {
                if (arr[i] === "Z") {
                    arr[i] = "a";
                } else {
                    arr[i] = arr[i].toLowerCase();
                    arr[i] = String.fromCharCode(arr[i].charCodeAt(arr[i]) + 1);
                }
            }
        }
        console.log(arr.join(""));
    }
})();