关于FCC认证的,部分题型做个记录

本人博主 孤雪飘寒原创,对你有帮助请点赞,有想法或问题请在下面评论说出来,博主第一时间回复,转载请注明出处,谢谢

JS篇

1.整数的阶乘

function factorialize(num) {
    return (num<1) ? num = 1 : num*factorialize(num-1);
}

2.检查字符串是否回文

function palindrome(str) {
  // Good luck!
  //忽略标点符号
  str=str.replace(/\W+/g,'');
  str=str.replace(/\_+/g,'');
  //忽略大小写
  str=str.toLowerCase();
  //重组
  var newArray=str.split('').reverse().join('');

  if(str==newArray){
    return true;
  }else{
    return false;
  }
}
palindrome("eye");

3.检查字符串中最长单词长度

function findLongestWord(str) {
  var arr=str.split(' ');
  var bjs=0;
  for(var i=0;i<arr.length;i++){
    var arrNum=arr[i].length;
    if(arrNum>bjs){
      bjs=arrNum;
    } 
  }
  return bjs;
}

findLongestWord("The quick brown fox jumped over the lazy dog");

4.首字母全部大写

function titleCase(str) {
  str=str.toLowerCase().split(' ');
  var newStr='';
  var newArray=[];
  for(var i=0;i<str.length;i++){
    var a=str[i][0].toUpperCase();
    var str1 = str[i].replace(/^\w/,a);
    newArray.push(str1);
  }
  newStr=newArray.join(' ');
  return newStr;
}

titleCase("I'm a little tea pot");

5.二维数组中最大值组成一个新的数组

function largestOfFour(arr) {
  // You can do this!
  var newArray=[];
  for(var i=0;i<arr.length;i++){
    var bjs=0;
    for(var j=0;j<arr[i].length;j++){
      if(arr[i][j]>bjs){
        bjs=arr[i][j];
        newArray[i]=bjs;
      }

    }
  }
  return newArray;
}

largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 1857, 1]]);

6.判断第二参数的字符串是否存在于第一参数字符串中

function confirmEnding(str, target) {
  // "Never give up and good luck will find you."
  // -- Falcor
  return  str.substr(-(target.length))==target?true:false;
}
confirmEnding("He has to give me a new name", "name");

7.重复一个指定的字符串 num次,如果num是一个负数则返回一个空字符串。

function repeat(str, num) {
  // repeat after me
  if(num<=0){
    return "";
  }
var arr=[];
  for(var i=0;i<num;i++){
    arr[i]=str;
  }
  str=arr.join("");
  return str;
}

repeat("abc", 2);

8.截取字符长度,根据参数大小判断添加后长度

function truncate(str, num) {
  // Clear out that junk in your trunk
  if(str.length > num){
    if(num <= 3){
      str = str.slice(0,num).concat("...");
    }else{
      str = str.slice(0,num-3).concat("...");
    }    
  }
  return str;
}

truncate("A-tisket a-tasket A green and yellow basket", "A-tisket a-tasket A green and yellow basket".length + 2);

9.将一个数组根据参数拆分成二维数组

function chunk(arr, size) {
  // Break it up.
  var newArray=[];
  for(var i=0;i<arr.length;i=i+size){
    var index=i+size;
  var tempArray=arr.slice(i,index);
  newArray.push(tempArray); 
  //简化写法
  //   newArray.push(arr.slice(i,i+size));
  }
    return newArray;
}

chunk(["a", "b", "c", "d"], 2);

10.数组的切割

function slasher(arr, howMany) {
  // it doesn't always pay to be first
  var newArray=[];
  if(howMany>arr.length){
    return newArray;
  }
  newArray=arr.slice(howMany);
  return newArray;
}

slasher([1, 2, 3], 2);

11.蛤蟆可以吃队友,也可以吃对手。

如果数组第一个字符串元素包含了第二个字符串元素的所有字符,函数返回true。

function mutation(arr) {
   var str1=arr[0].toLowerCase();
   var str2=arr[1].toLowerCase(); 
  //1.整句存在
  //return str1.indexOf(str2)<0?false:true;
  //2.每个都存在
    for(var i=0;i<str2.length;i++){
      if(str1.indexOf(str2.charAt(i))==-1){
        return false; 
      }
    }
  return true;
}

mutation(["zyxwvutsrqponmlkjihgfedcba", "qrstu"]);

12.删除数组中的所有假值。

在JavaScript中,假值有false、null、0、”“、undefined 和 NaN。

function bouncer(arr) {
  // Don't show a false ID to this bouncer.
  var newArr=arr.filter(function(x){
    return Boolean(x)!=false;
  });
  return newArr;
}

bouncer([7, "ate", "", false, 9,0]);

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

function destroyer(arr) {
  // Remove all the values
  var oneArr=arguments[0];

  var newArr=[];
  var fArr=[];
  //获取所有要剔除的条件
  for(var i=1;i<arguments.length;i++){
    newArr[i-1]=arguments[i];
  }
  //过滤
  fArr=oneArr.filter(function(x){
    for(var i=0;i<newArr.length;i++){
      if(x==newArr[i]){
        return false;
      }
    }
    return true;
  });
 return fArr;
}

destroyer([1, 2, 3, 1, 2, 3], 2, 3);

14.先给数组排序,然后找到指定的值在数组的位置,最后返回位置对应的索引。

function where(arr, num) {
  // Find my place in this sorted array.
  arr.push(num);
  arr.sort(function(a,b){return a-b;});
  var indexArr=0;
  for(var i=0;i<arr.length;i++){
    if(arr[i]==num){
      indexArr=i;
      return indexArr;
    }    
  }
  return  indexArr;
}

where([40, 60], 50);

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

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

function rot13(str) { // LBH QVQ VG!
  var arr=str.toUpperCase().split(" ");
  var str1=[];

  for(var i=0;i<arr.length;i++) {
    var arr1=arr[i].split("");
    for(var j=0;j<arr1.length;j++) {
      var num=arr1[j].charCodeAt();
      if(num>=65&&num<=90) {
        arr1[j]=num+13>90?String.fromCharCode(64+(num+13-90)):String.fromCharCode(num + 13);
      }

    }
    str1.push(arr1.join(""));
  }
 return str1.join(" ");
 //return String.charCodeAt(str);
}

// Change the inputs below to test
rot13("Z");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值