【中等】算法nodeJs:字符串加密

91 阅读1分钟

描述

对于给定的字符串 s ,我们可以利用其进行加密。
具体地,首先先将 s 进行去重,即如果 s 中存在重复的字母,则只保留第一次出现的字母。随后,从 "a" 开始依次在字符串末尾补充 s 中未出现的字母,使得 s 成为一个完整的字母表。
最后,对于给定的明文 t ,我们利用上述字母表进行加密,即对于 t 中的每个字母,替换为 s 构建得到的新字母表中相同位置的字母。

输入描述:

第一行输入一个长度为 1≦length(s)≦100 ,仅由小写字母构成的字符串 s ,代表待构建的新字母表底串。
第二行输入一个长度为 1≦length(t)≦100 ,仅由小写字母构成的字符串 t ,代表需要加密的明文。

输出描述:

在一行上输出一个字符串,代表加密后的密文。

image.png

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);
})();