FreeCodeCamp基础算法题


FreeCodeCamp算法题


Reverse a String -翻转字符串

function reverseString(str) {
  // 请把你的代码写在这里
  return str.split('').reverse().join('');
}

reverseString("hello");

Factorialize a Number-阶乘

function factorialize(num) {
  // 请把你的代码写在这里
  var sum=1;
  if(num===0){return 1;}
 for(var i=1;i<=num;i++){
   sum*=i;
 }
  return sum;
}

factorialize(5);

Check for Palindromes-检查回文字符串

function palindrome(str) {
  // 请把你的代码写在这里
   str = str.replace( /[\W\s_]/g,"").toLowerCase();
    return str === str.split("").reverse().join("");
}

palindrome("race car");

Find the Longest Word in a String-找出最长单词

function findLongestWord(str) {
  // 请把你的代码写在这里
  var arr=str.split(' ');
  arr.sort(function(a,b){return b.length-a.length;});
  return arr[0].length;
}

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

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

function titleCase(str) {
  // 请把你的代码写在这里
  var arr=str.split(' ');
  for(var i=0;i<arr.length;i++){
    arr[i]=arr[i][0].toUpperCase()+arr[i].slice(1).toLowerCase();
  }
  return arr.join(' ');
}

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

Return Largest Numbers in Arrays -找出多个数组中的最大数

function largestOfFour(arr) {
  // 请把你的代码写在这里
  var newArr=[];
  for(var i=0;i<arr.length;i++){
    newArr[i]=arr[i].sort(function(a,b){return b-a;})[0];
  }
  return newArr;
}

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

Confirm the Ending -检查字符串结尾

function confirmEnding(str, target) {
  // 请把你的代码写在这里
  return str.substr(str.length-target.length,str.length)==target;
}

confirmEnding("Bastian", "n");

Repeat a string repeat a string -重复输出字符串

function repeat(str, num) {
  // 请把你的代码写在这里
  if(num<0){
    return '';
  }else{
    var newStr='';
    for(var i=1;i<=num;i++){
      newStr+=str;
    }
    return newStr;
  }
}

repeat("abc", 3);

Truncate a string -截断字符串

function truncate(str, num) {
  // 请把你的代码写在这里
  if(num<=3){
    return str.slice(0,num)+'...';
  }else if(num>=str.length){
    return str;
  }else{
    return str.slice(0,num-3)+'...';
  }
}

truncate("Peter Piper picked a peck of pickled peppers", 14);

Chunky Monkey -猴子吃香蕉, 分割数组

function chunk(arr, size) {
  // 请把你的代码写在这里
  var newArr=[];
  for(var i=0;i<arr.length;i+=size){
    newArr.push(arr.slice(i,i+size));
  }
  return newArr;
}

chunk([0, 1, 2, 3, 4, 5], 2);

Slasher Flick -截断数组

function slasher(arr, howMany) {
  // 请把你的代码写在这里
  return arr.splice(howMany);
}

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

Mutations -比较字符串

function mutation(arr) {
  // 请把你的代码写在这里
  var newArr=arr[1].toLowerCase().split('');
  for(var i=0;i<newArr.length;i++){
    if(arr[0].toLowerCase().indexOf(newArr[i])===-1){
      return false;
    }
  }
  return true;
}

mutation(["hello", "hey"]);

Falsy Bouncer-过滤数组假值

function bouncer(arr) {
  // 请把你的代码写在这里
  return arr.filter(Boolean);
}

bouncer([1, null, NaN, 2, undefined]);

Seek and Destroy-摧毁数组

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

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

Where do I belong-数组排序并找出元素索引

function where(arr, num) {
  // 请把你的代码写在这里
  arr.push(num);
  arr.sort(function(a,b){return a-b;});
  for(var i=0;i<arr.length;i++){
    if(arr[i]===num){
      return i;
    }
  }
  //return arr.indexOf(num);
}

where([40, 60], 50);

Caesars Cipher-凯撒密码

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("");
}

rot13("SERR PBQR PNZC");  // 你可以修改这一行来测试你的代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值