描述
对于给定的字符串 s ,我们可以利用其进行加密。
具体地,首先先将 s 进行去重,即如果 s 中存在重复的字母,则只保留第一次出现的字母。随后,从 "a" 开始依次在字符串末尾补充 s 中未出现的字母,使得 s 成为一个完整的字母表。
最后,对于给定的明文 t ,我们利用上述字母表进行加密,即对于 t 中的每个字母,替换为 s 构建得到的新字母表中相同位置的字母。
输入描述:
第一行输入一个长度为 1≦length(s)≦100 ,仅由小写字母构成的字符串 s ,代表待构建的新字母表底串。
第二行输入一个长度为 1≦length(t)≦100 ,仅由小写字母构成的字符串 t ,代表需要加密的明文。
输出描述:
在一行上输出一个字符串,代表加密后的密文。
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
const arr = [];
while ((line = await readline())) {
arr.push(line);
}
const [s, t] = arr;
const sArr = [...new Set(s.split(""))];
const azTable = [
"a",
"b",
"c",
"d",
"e",
"f",
"g",
"h",
"i",
"j",
"k",
"l",
"m",
"n",
"o",
"p",
"q",
"r",
"s",
"t",
"u",
"v",
"w",
"x",
"y",
"z",
];
let az = "";
for (let i = 0; i < azTable.length; i++) {
if (!sArr.join("").includes(azTable[i])) az += azTable[i];
}
const newS = sArr.join("") + az ;
let inputStr = "";
for (let i = 0; i < t.length; i++) {
let index = azTable.findIndex((item) => item === t[i]);
inputStr += newS[index];
}
console.log(inputStr);
})();