题解 | #字符串加密#
字符串加密
https://www.nowcoder.com/practice/e4af1fe682b54459b2a211df91a91cf3
// 方法一:构造明文ABCDE....对应的密文encode:"NIHAO...." void async function () { //输入 const key = (await readline()).toUpperCase(); const code = await readline(); //处理规则 let rulers = "",j = 0,k = 0, plain = ""; const set = new Set(key.split("")); for(let i = 0; i < 26; i++){ plain += String.fromCharCode("A".charCodeAt()+i); while(k < key.length && rulers.indexOf(key.charAt(k))!=-1) k++; if(k < key.length){ rulers += key.charAt(k); } else { while(j < 26 && set.has(String.fromCharCode("A".charCodeAt()+j))) j++; rulers += String.fromCharCode("A".charCodeAt()+j++); } } //小写字母表 plain += plain.toLowerCase(); rulers += rulers.toLowerCase(); // 加密 let encode = ""; for(const c of code){ encode += rulers.charAt(plain.indexOf(c)); } console.log(encode); // console.log(plain); // console.log(rulers); }() // 方法二:利用set来构造上述的rulers。大坑:题目的保证输入的字符串中仅包含小写字母 void (async function () { //输入 const key = await readline() const code = await readline(); var line = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toLocaleLowerCase(); var set = new Set(key + line); var rulers = new Array(...set); // 加密 let encode = ""; for(const c of code){ encode += rulers[line.indexOf(c)]; } console.log(encode); })();