Caesars Cipher

让上帝的归上帝,凯撒的归凯撒。

下面我们来介绍风靡全球的凯撒密码Caesar cipher,又叫移位密码。

移位密码也就是密码中的字母会按照指定的数量来做移位。

一个常见的案例就是ROT13密码,字母会移位13个位置。由‘A‘ ? ‘N‘, ‘B‘ ? ‘O‘,以此类推。

写一个ROT13函数,实现输入加密字符串,输出解密字符串。

所有的字母都是大写,不要转化任何非字母形式的字符(例如:空格,标点符号),遇到这些特殊字符,跳过它们。

这是一些对你有帮助的资源:

按照题目思路就好

function rot13(str) {
  var result=[];
 for(var i=0;i<str.length;i++){
   if(str.charCodeAt(i)>=65&&str.charCodeAt(i)<=77){
      result.push(String.fromCharCode(str.charCodeAt(i)+13));
    }
   else if(str.charCodeAt(i)>=78&&str.charCodeAt(i)<=90){
      result.push(String.fromCharCode(str.charCodeAt(i)-13));
   }
   else{
      result.push(String.fromCharCode(str.charCodeAt(i)));
   }
 }
  return result.join(‘‘);
}

其实两种方法差不多

function rot13(str) {
var aArr=[];
var result=‘‘;
for(var i=0;i<str.length;i++){
if(str.charCodeAt(i)>64 && str.charCodeAt(i)<78){
aArr.push(str.charCodeAt(i)+13);
}
else if(str.charCodeAt(i)>77&&str.charCodeAt(i)<91){
aArr.push(str.charCodeAt(i)-13);
}
else{
aArr.push(str.charCodeAt(i));
}
}
for(var j=0;j<aArr.length;j++){
result=result.concat(String.fromCharCode(aArr[j]));
}
return result;
}
时间: 2024-10-18 19:18:25

Caesars Cipher的相关文章

Caesars Cipher(算法)

题目 让上帝的归上帝,凯撒的归凯撒. 下面我们来介绍风靡全球的凯撒密码Caesar cipher,又叫移位密码. 移位密码也就是密码中的字母会按照指定的数量来做移位. 一个常见的案例就是ROT13密码,字母会移位13个位置.由'A' ? 'N', 'B' ? 'O',以此类推. 写一个ROT13函数,实现输入加密字符串,输出解密字符串. 所有的字母都是大写,不要转化任何非字母形式的字符(例如:空格,标点符号),遇到这些特殊字符,跳过它们. 提示 String.charCodeAt() Strin

js中字符和数组一些基本算法题

最近在刷 fcc的题,跟升级打怪一样,一关一关的过,还挺吸引我的.今天抽时间把 Basic Algorithm Scritping  这部分题做了,根据一些提示,还是比较简单的.有些题的处理方式 方法,我想值得借鉴.比如在项目中有时候要处理一个字符,如果想不到一些相关的方法,还挺费事的,所以,在此记录下来,如果以后遇到一些字符或者数组处理,可以来翻翻这篇文章,希望以此得到一些提示而不是去翻文档.   看到此博文的博友,有更好更简单的代码或者好的想法,请留言交流(我一直觉得只有学习别人的优秀代码才

fcc 基础算法题

fcc 基础算法题 fcc Reverse a String 翻转字符串 先把字符串转化成数组,再借助数组的reverse方法翻转数组顺序,最后把数组转化成字符串. function reverseString(str) { var arr =str.split(""); //string.split("");以""分割字符串 并返回新的数组 不改变原字符串 arr.reverse(); //反转数组 返回数组的引用 改变原数组 arr = ar

fcc初级算法题

  1.Reverse a String 翻转字符串 先把字符串转化成数组,再借助数组的reverse方法翻转数组顺序,最后把数组转化成字符串. 你的结果必须得是一个字符串 function reverseString(str) { str = str.split(''); str.reverse(); str = str.join(''); return str; } reverseString("hello"); 2.Factorialize a Number 计算一个整数的阶乘

Freecodecamp 前端初级算法(个人向)

freecodecamp 初级算法地址戳这里 Reverse a String 翻转字符串 1 function reverseString(str) { 2 str=str.split("").reverse().join(""); 3 return str; 4 } 5 6 reverseString("hello") Factorialize a Number 计算一个整数的阶乘 1 function factorialize(num) {

FreeCodeCamp初级算法部分学习

Reverse a String 翻转字符串 先把字符串转化成数组,再借助数组的reverse方法翻转数组顺序,最后把数组转化成字符串. 你的结果必须得是一个字符串 当你完成不了挑战的时候,记得开大招'Read-Search-Ask'. 这是一些对你有帮助的资源: Global String Object String.split() Array.reverse() Array.join() 1 function reverseString(str) { 2 // 请把你的代码写在这里 3 va

Cracking The Vigenere Cipher

In order to crack "Vigenere Cipher" under the circumstance that the key length can be only 3, 4 or 5, I used frequency analysis to find possible keys and compared the Euclidean distance of all candidate keys calculated with "Relative freque

poj 2159 D - Ancient Cipher 文件加密

Ancient Cipher Description Ancient Roman empire had a strong government system with various departments, including a secret service department. Important documents were sent between provinces and the capital in encrypted form to prevent eavesdropping

BZOJ 1031: [JSOI2007]字符加密Cipher 后缀数组

1031: [JSOI2007]字符加密Cipher Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 6014  Solved: 2503[Submit][Status][Discuss] Description 喜欢钻研问题的JS同学,最近又迷上了对加密方法的思考.一天,他突然想出了一种他认为是终极的加密办法 :把需要加密的信息排成一圈,显然,它们有很多种不同的读法.例如下图,可以读作: JSOI07 SOI07J OI07JS I07JSO 0