【发布时间】:2021-03-31 16:14:43
【问题描述】:
我正在研究一种算法,我需要一些帮助。问题来了:
最简单和最广为人知的密码之一是凯撒密码,也称为移位密码。在移位密码中,字母的含义会移动一定的量。
一种常见的现代用途是 ROT13 密码,其中字母的值移动了 13 位。因此 A ↔ N、B ↔ O 等等。
编写一个以ROT13编码字符串作为输入并返回解码字符串的函数。
所有字母都是大写的。不要转换任何非字母字符(即空格、标点符号),但要传递它们。
这是我的代码
function rot13(str) {
let letters = ['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 newStr = str.toLowerCase()
for(let i = 0; i < newStr.length; i++){
if(letters.indexOf(newStr[i]) > 13){
newStr.replace(newStr[i], letters[letters.indexOf(newStr[i]) - 13])
} else {
newStr.replace(newStr[i], letters[letters.indexOf(newStr[i]) + 13])
}
}
return newStr.toUpperCase();
}
console.log(rot13("SERR PBQR PNZC"));
我看到,在它替换了一个字母之后,newStr 会恢复到原来的形式,并且什么都没有改变。有什么问题?
【问题讨论】:
标签: javascript algorithm caesar-cipher