0

这就是挑战: Caesars Cipher - 字母移动了 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
*/
4

1 回答 1

0

弄清楚了

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.");


于 2020-05-18T22:33:45.020 回答