FreeCodeCamp基础算法题答案解析

来源:互联网 发布:新电脑软件下载 编辑:程序博客网 时间:2024/06/09 21:48

Reverse a String翻转字符串

function reverseString(str) {    return str.split("").reverse().join("");}

Factorialize a Number阶乘

function factorial(num){  if(num<0){    num=-1;  }  else if(num==0 || num==1){    num=1;  }  else{    for(var i=num-1; i>=1; i++){      num*=i;    }  }  return num;}

Check for Palindromes回文检验

function palindrome(str) {     //去掉非字母数字、空白字符和下划线    str = str.replace( /[\W\s_]/g,"").toLowerCase();    return str === str.split("").reverse().join("");}

Find the Longest Word in a String寻找句中最长单词

得到最长单词的长度。

function findLongestWord(str){  var array=str.split(' ');   array.sort(function(a,b){    return b.length-a.length;  })  return array[0];}

Title Case a Sentense句中单词首字母大写

function titleCase(str) {    var arr=str.toLowerCase().split(" ");    var narr=[];    for(var i=0;i<arr.length;i++){        arr[i]=arr[i][0].toUpperCase()+arr[i].slice(1);        }//首字母大写+截取第二到最后一个字母    return arr.join(" ");}

Return Largest Numbers in Arrays获得数组的每个子数组中最大的数字

function largestOfFour(arr){var array=[];for(var i=0; i<arr.length;i++){       //遍历    arr[i].sort(function(a,b){      return b-a;                     //排序    })  array.push(arr[i][0]);              //取值  }  return array;                       //返回}

Confirm the Ending检测一个字符串是否以另一个字符串结尾

function confirmEnding(str, target) {    //substr(start,end); str长度减去target长度=start,target长度=end    return target===str.substr(str.length-target.length,target.length);}

Repeat a string重复字符串

function repeat(str, num) {    var strn="";    var i=0;    while(i<num){        strn+=str;        i++;    }    return strn;}

Truncate a string截断字符串

function truncate(str,num){
  var string="";
  if(num<str.length){
    if(num<=3){
      string=str.slice(0,num)+"...";
    }
    else{
      string=str.slice(0,num-3)+"...";
    }
    return string;
  }
  return str;
}
如果字符串的长度比指定的参数num长,则把多余的部分用...来表示。
切记,插入到字符串尾部的三个点号也会计入字符串的长度。
但是,如果指定的参数num小于或等于3,则添加的三个点号不会计入字符串的长度。

Chunky Monkey将数组元素分成指定个数的子数组

将数组元素(根据给定的元素个数(示例代码中的size))划分为若干个子数组,如果最后一组数组元素个数不够,也算成一组。

function chunk(arr, size) {    var narr=[];    for(var i=0;i<arr.length;i+=size){        narr.push(arr.slice(i,i+size));    }//隔size个元素划分一次(push到新数组中)    return narr;}

Slasher Flick从数组中去掉指定个数元素

从数组中去掉前n个元素,得的到新数组。

function slasher(arr, howMany) {    return arr.slice(howMany);    //或者    //return arr.splice(howMany);}

Mutations一个字符串中是否包含另一个字符串中的所有字符

忽略顺序和大小写。示例代码中的两个字符串是一个数组的两个元素,如:["str1","str2"]。题目见fcc-mutations

function mutation(arr) {    for(var i=0;i<arr[1].length;i++){        if(arr[0].toLowerCase().indexOf(arr[1][i].toLowerCase())===-1){            return false;        }//将字符串2中的每一个字符与字符串一的    }  return true;}

Falsy Bouncer去除数组中的假值元素

function bouncer(arr){  return arr.filter(Boolean);}

JavaScript中,假值有falsenull0""undefined 和 NaN

Seek and Destroy从数组中删除指定元素

例如从数组[1,2,3]中删除1,2:destoryer([1,2,3],2,3)

function destroyer(arr) {    var narr = [];    for(var i = 1; i < arguments.length; i++){        narr.push(arguments[i]);    }    narr = arr.filter(function(item,index,array){        return narr.indexOf(item) ===-1;//从narr中选出在arr中找不到的元素    });    return narr;}

Where do I belong判断一个数字在数组中的索引位置

数组元素(此代码例子中为数字数组)要按数值进行从小到大排列,求得某个数字放入排列好的数组中后的索引位置(该数字遵循大小顺序放入数组中,该数字与数组中元素值一致则放在相同大小的元素前方)。如3放在数组[1,3,5,2,4,6]中的索引值是2。题目见where do I belong。

function where(arr,num){  arr.push(num);  arr.sort(function(a,b){    return a-b;   //排序  })  return arr.indexOf(num);}

ROT13解密

ROT13-维基百科。

为了使代码不那么冗长,直接用了查得的字母char code数值。

function rot13(str) { // LBH QVQ VG!    var arr=str.split("");//A-N,O-Z;   a-m: +13  |  n-z: -13//charA="A".charCodeAt();//A编码65//charZ="Z".charCodeAt();//Z编码90// middle=(charA+charZ)/2;//(90+65)/2=77.5     for(var i=0;i<arr.length;i++){        var index=str.charCodeAt(i);        if(index<=77.5 && index>=65){            arr[i]=String.fromCharCode(index+13);            }        if(index>77.5 && index<=90){            arr[i]=String.fromCharCode(index-13);        }    }    return arr.join("");}
阅读全文
0 0
原创粉丝点击