• Caesars Cipher-freecodecamp算法题目


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

    1. 要求
      • 字母会按照指定的数量来做移位。
      • 一个常见的案例就是ROT13密码,字母会移位13个位置。由'A' ↔ 'N', 'B' ↔ 'O',以此类推。
      • 写一个ROT13函数,实现输入加密字符串,输出解密字符串。
      • 所有的字母都是大写,不要转化任何非字母形式的字符(例如:空格,标点符号),遇到这些特殊字符,跳过它们。
    2. 思路
      • 将输入字符串分割成二维数组(一维由空格分开,二维分隔单个字符)
      • 在for循环遍历数组所有元素,利用.charCodeAt()判断各个元素的 UTF-16 代码单元值的数字的范围,对其.charCodeAt()进行+/- 13操作或者不进行操作
      • 利用String.fromCharCode()返回加密后的数组,最后用.join()将数组元素拼接成加密后的字符串
    3. 代码
      •  1 function rot13(str) { // LBH QVQ VG!
         2   // 请把你的代码写在这里
         3   var temp = str;
         4   temp = temp.split(' ');
         5   for (var i = 0;i < temp.length;i++){
         6      temp[i] = temp[i].split('');
         7   }
         8   var code = temp;
         9   for (var j =0;j < temp.length;j++){
        10     for (var k = 0;k < temp[j].length;k++){
        11       if(temp[j][k].charCodeAt() <= 77 && temp[j][k].charCodeAt() >= 65){
        12         code[j][k] = temp[j][k].charCodeAt() + 13;
        13       }
        14       else if (temp[j][k].charCodeAt() > 77 && temp[j][k].charCodeAt() < 91)
        15       {code[j][k] = temp[j][k].charCodeAt() - 13;
        16       }
        17       else {code[j][k] = temp[j][k].charCodeAt();}
        18       code[j][k] = String.fromCharCode(code[j][k]);
        19     }
        20   }
        21   for (var l = 0;l < code.length;l++){
        22       code[l] = code[l].join('');
        23   }
        24   code = code.join(' ');
        25   return code;
        26 }
        27 
        28 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
  • 相关阅读:
    和菜鸟一起学android4.0.3源码之硬件gps简单移植
    Android学习笔记(三一):线程:Message和Runnable
    Android Runnable 运行在那个线程
    Android 的消息队列模型
    iOS开发UI篇—iOS开发中三种简单的动画设置
    ios开发UI篇—在ImageView中添加按钮以及Tag的参数说明
    ios开发UI篇—Kvc简单介绍
    iOS开发UI篇—从代码的逐步优化看MVC
    iOS开发UI篇—字典转模型
    iOS开发UI篇—九宫格坐标计算
  • 原文地址:https://www.cnblogs.com/ahswch/p/9297212.html
Copyright © 2020-2023  润新知