您的位置:首页 > 其它

FreeCodeCamp基础算法题答案解析

2017-08-25 23:08 579 查看


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中,假值有
false
null
0
""
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("");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: