这是挑战:凯撒密码 -字母移动了13个位置。因此,"A"N","Q"↔ ↔"D"等等。
将 ROT13 编码字符串作为输入并返回解码字符串的函数。 所有字母都将是大写的。不要转换任何非字母字符(即空格、标点符号(,但要传递它们。
*我得到了正确的输出,但目前,每个字母都是一个字符串。有没有办法将所有单独的字母组合成一个句子*
function rot13(str) {
var original = str.split('')
var alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".split('')
let i = 0;
while(i<original.length){
let indexVal = alphabet.indexOf(original[i])
if(indexVal>= 13){
indexVal -=13
}else if(indexVal===-1){
indexVal = 33
}
else{
indexVal += 13
}
var final = alphabet[indexVal]
i++;
console.log(final)
}
}
rot13("SERR CVMMN");//should log FREE PIZZA
/*
currently logs:
F
R
E
E
undefined
P
I
Z
Z
A
undefined
*/
想通了
function rot13(str) {
var original = str.split('')
var alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".split('')
let i = 0;
let arr = "";
while(i<original.length){
let indexVal = alphabet.indexOf(original[i])
if(indexVal>= 13){
indexVal -=13
}else if(indexVal===-1){
indexVal = 33
}
else{
indexVal += 13
}
arr+=alphabet[indexVal];
arr = arr.replace(undefined, original[i])
i++;
}
return arr
}
rot13("GUR DHVPX OEBJA SBK WHZCF BIRE GUR YNML QBT.");