Caesars Cipher(凯撒密码、移位密码)

  1. 要求

    • 字母会按照指定的数量来做移位。
    • 一个常见的案例就是ROT13密码,字母会移位13个位置。由'A' ↔ 'N', 'B' ↔ 'O',以此类推。
    • 写一个ROT13函数,实现输入加密字符串,输出解密字符串。
    • 所有的字母都是大写,不要转化任何非字母形式的字符(例如:空格,标点符号),遇到这些特殊字符,跳过它们。
  2. 思路
    • 将输入字符串分割成二维数组(一维由空格分开,二维分隔单个字符)
    • 在for循环遍历数组所有元素,利用.charCodeAt()判断各个元素的 UTF-16 代码单元值的数字的范围,对其.charCodeAt()进行+/- 13操作或者不进行操作
    • 利用String.fromCharCode()返回加密后的数组,最后用.join()将数组元素拼接成加密后的字符串
  3. 代码
    •  function rot13(str) { // LBH QVQ VG!
      // 请把你的代码写在这里
      var temp = str;
      temp = temp.split(' ');
      for (var i = 0;i < temp.length;i++){
      temp[i] = temp[i].split('');
      }
      var code = temp;
      for (var j =0;j < temp.length;j++){
      for (var k = 0;k < temp[j].length;k++){
      if(temp[j][k].charCodeAt() <= 77 && temp[j][k].charCodeAt() >= 65){
      code[j][k] = temp[j][k].charCodeAt() + 13;
      }
      else if (temp[j][k].charCodeAt() > 77 && temp[j][k].charCodeAt() < 91)
      {code[j][k] = temp[j][k].charCodeAt() - 13;
      }
      else {code[j][k] = temp[j][k].charCodeAt();}
      code[j][k] = String.fromCharCode(code[j][k]);
      }
      }
      for (var l = 0;l < code.length;l++){
      code[l] = code[l].join('');
      }
      code = code.join(' ');
      return code;
      } rot13("SERR PBQR PNZC"); // 你可以修改这一行来测试你的代码
  4. 相关链接
    • http://www.baike.com/wiki/ROT13&prd=so_1_doc
    • https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt
    • https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode

Caesars Cipher-freecodecamp算法题目的更多相关文章

  1. Map the Debris -freecodecamp算法题目

    Map the Debris 1.要求 返回一个数组,其内容是把原数组中对应元素的平均海拔转换成其对应的轨道周期. 原数组中会包含格式化的对象内容,像这样 {name: 'name', avgAlt: ...

  2. Spinal Tap Case -freecodecamp算法题目

    Spinal Tap Case 1.要求 将字符串转换为 spinal case. Spinal case 是 all-lowercase-words-joined-by-dashes 这种形式的,也 ...

  3. Search and Replace -freecodecamp算法题目

    Search and Replace 1.要求 使用给定的参数对句子执行一次查找和替换,然后返回新句子. 第一个参数是将要对其执行查找和替换的句子. 第二个参数是将被替换掉的单词(替换前的单词). 第 ...

  4. [优化]Steamroller-freecodecamp算法题目

    晚上在medium看到一篇关于找工作的文章,里面提到一个面试题目--flattening an array(扁平化数组).这我好像在哪看过!应该是freecodecamp里的算法某一题.翻了下博客记录 ...

  5. Top Coder算法题目浏览器

    作者:Lucida 微博:@peng_gong 豆瓣:@figure9 原文链接:http://zh.lucida.me/blog/top-code-offline-browser/ 关于 左耳朵耗子 ...

  6. 一道算法题目, 二行代码, Binary Tree

    June 8, 2015 我最喜欢的一道算法题目, 二行代码. 编程序需要很强的逻辑思维, 多问几个为什么, 可不可以简化.想一想, 二行代码, 五分钟就可以搞定; 2015年网上大家热议的 Home ...

  7. iOS面试中常见的算法题目

    一.前言 这里是在iOS求职中自己遇到的算法题,希望对大家有所帮助.不定期更新.如果大家想在线运行代码调试,可以将代码拷贝到这里.然后进行调试.下面就是常见的算法题目. 二.正文 1.就n的阶乘.(这 ...

  8. 【起】ACM类下为过往所做过的部分算法题目

    [起]ACM类下为过往所做过的部分算法题目 几百道题,日后细细品味.

  9. LeetCode算法题目解答汇总(转自四火的唠叨)

    LeetCode算法题目解答汇总 本文转自<四火的唠叨> 只要不是特别忙或者特别不方便,最近一直保持着每天做几道算法题的规律,到后来随着难度的增加,每天做的题目越来越少.我的初衷就是练习, ...

随机推荐

  1. jquery插件fileupload图片上传(前端如何处理)

    1.页面首先引入jquery,版本不要低于1.6 <script src="../js/jquery.min.js"></script>2.其次页面引入对应 ...

  2. Maven打包Spark程序Pom配置

    scala和java混合的spark程序之前使用其他配置始终有报找不到包的情况,尝试了一下如下配置可以打包成功.<build> <pluginManagement> <p ...

  3. Git 深度学习填坑之旅二(文件三种状态、打标签)

    0x01 三种状态 Git 有三种状态,你的文件可能处于其中之一: 已提交(committed).已修改(modified)和已暂存(staged). 已提交表示数据已经安全的保存在本地数据库中. 已 ...

  4. rand()函数的用法

    C++中rand() 函数的用法 1.rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数. 2.如果你要产生0~99这100个整数中的一个随机整数, ...

  5. bzoj 5337 [TJOI2018] str

    bzoj 5337 [TJOI2018] str Link Solution 水题 直接 \(f[i][j]\) 表示以第 \(i\) 位为结束位置,当前已经匹配了前 \(j\) 个氨基酸的方案数 使 ...

  6. 命令行下载工具 wget

    wget 是一个简单而强大的跨平台命令行下载工具,包括 Windows 也有对应的版本.全称 GNU Wget,属于 GNU 计划的一部分,自由软件.支持 HTTP.HTTPS 和 FTP 协议,可在 ...

  7. js:常用到的js操作记录

    1:对参数去除空格 str.replace(/^\s+|\s+$/g, '');

  8. Try .NET离线版

    https://github.com/dotnet/try Try .NET离线版 使用Try.NET创建可交互.NET文档   原文地址:Create Interactive .NET Docume ...

  9. CSS——弹性盒模型

    弹性盒子是 CSS3 的一种新的布局模式. CSS3 弹性盒( Flexible Box 或 flexbox),是一种当页面需要适应不同的屏幕大小以及设备类型时确保元素拥有恰当的行为的布局方式. 这东 ...

  10. (转)关于inode和block的两道企业面试题

    关于inode和block的两道企业面试题 原文:http://www.tk4479.net/xiaolong361/article/details/52373374 一.一个100M的磁盘分区,分别 ...