zoukankan      html  css  js  c++  java
  • FCC——相关练习

    算法题目1:Seek and Destroy(摧毁数组)

    金克斯的迫击炮!

    实现一个摧毁(destroyer)函数,第一个参数是待摧毁的数组,其余的参数是待摧毁的值。

    帮助资源:

    destroyer([1, 2, 3, 1, 2, 3], 2, 3) 应该返回 [1, 1].
    destroyer([1, 2, 3, 5, 1, 2, 3], 2, 3) 应该返回 [1, 5, 1].
    destroyer([3, 5, 1, 2, 2], 2, 3, 5) 应该返回 [1].
    destroyer([2, 3, 2, 3], 2, 3) 应该返回 [].
    destroyer(["tree", "hamburger", 53], "tree", 53) 应该返回 ["hamburger"].

    思路

    函数中有隐式的不确定个数的参数,而我们在函数中将会用到它,很显然,这需要用到 arguments对象;

    arguments 是一个类数组对象。代表传给一个function的参数列表。

    很显然,既然是类数组对象,说明它不是真正的数组,没有数组所具有的属性和方法(除了  length 属性和索引)。

    为了便于我们接下来的运算,我们需要把arr后面的待摧毁的所有参数放进一个数组,使用push()方法

    var args = [];
    for(var i = 1; i < arguments.length; i++){
      args.push(arguments[i]);
    }

    拿到了待摧毁数组,接下来就是用  filter() 方法实现的简单的去重操作了。 

    arr.filter(function(item,index,array){
        return args.indexOf(item) < 0;    //小于0,就是没有在待摧毁的数组里查询到,返回-1
    });

    因为  filter() 不会改变原始数组,所以声明一个变量接收上一步的返回结果,最后整个函数返回这个变量,问题解决啦! 

    解法

    function destroyer(arr) {
      // Remove all the values
      var args = [];
      for(var i = 1; i < arguments.length; i++){
        args.push(arguments[i]);
      }
      var temp = arr.filter(function(item,index,array){
        return args.indexOf(item) < 0;
      });
      return temp;
    }

     =========================================

    算法题目2:凯撒密码

    凯撒密码Caesar cipher,又叫移位密码。

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

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

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

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

    帮助资源:

    测试用例:

    rot13("SERR PBQR PNZC") 应该解码为 "FREE CODE CAMP"
    rot13("SERR CVMMN!") 应该解码为 "FREE PIZZA!"
    rot13("SERR YBIR?") 应该解码为 "FREE LOVE?"
    rot13("GUR DHVPX OEBJA QBT WHZCRQ BIRE GUR YNML SBK.") 应该解码为 "THE QUICK BROWN DOG JUMPED OVER THE LAZY FOX."
     

    思路

    1、26个字母的unicode码在65(A)与90(Z)之间,第13位M(77);
    2、将str通过.charCodeAt()转为unicode编码并放入新数组;
    其中非字母形式的字符直接放入.charAt(); 后13位字母减去13后放入; 前13位字母加上13后放入; 通过.fromCharCode()转化为字母,将数组转化为字符串;

    解法

     
  • 相关阅读:
    北京高考零分作文(看到最后一句笑喷了!)
    关于前几天无法访问的问题
    用 PHP 读取和编写 XML DOM[转]
    Delphi对INI文件的详细操作方法
    如何在WebService中获取客户端的IP地址
    正则表达式30分钟入门教程
    [原创]shell对xml操作的脚本
    预防SQL注入攻击之我见(好文章)
    表驱动方法(非常好的数据结构)
    请教shell读写XML问题
  • 原文地址:https://www.cnblogs.com/sherryStudy/p/fcc_algorithm.html
Copyright © 2011-2022 走看看