题解 | #字符串加密#
字符串加密
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);
})();
查看7道真题和解析