zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    光猫改桥接,默认的超级管理员密码。
    Vmware+爱快软路由单机校园网多拨实现带宽叠加[测试用](非普遍性)
    魔百和破解教程
    用SSH工具XShell连接谷歌云 root用户或普通用户
    MySQL优化技巧【持续更新】
    Navicat常用快捷键
    IDEA实用插件Lombok
    Redis数据类型及命令
    Java代码优化总结(持续更新)
    Spring---AOP注解开发&jdbc模板&Spring事务管理
  • 原文地址:https://www.cnblogs.com/ahswch/p/9297212.html
Copyright © 2011-2022 走看看