描述
规定这样一种密码的变换方法:
∙对于密码中的小写字母,参考九键手机键盘,将它们映射为对应的数字,具体地,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(""));
}
})();