freeCodeCamp中一些算法练习的实现

1.字符串中单词首字母大写 - Title Case a Sentence

    function titleCase(str) {
    // 请把你的代码写在这里
    var newArr = str.toLowerCase().split(" ");
    var secondArr = newArr.map(function(val) {
        return val.replace(val.charAt(0),val.charAt(0).toUpperCase());
    });
    var newStr = secondArr.join(" ");
    return newStr;
}

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

2.找出多个数组中的最大数 - Return Largest Numbers in Arrays
解题思路:将数组中的每个小数组进行从大到小排序,将 arr[i][0](排序后为最大值)用 push 方法 添加到新创建的数组中。

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

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

3.检查字符串结尾 - Confirm the Ending
解题思路:根据提示内容,使用 string.substr() 方法,将str的后几位字符与target进行拼配。

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

4.重复输出字符串 - Repeat a string repeat a string
解题思路:使用for循环,将字符串依次输出。

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

5.截断字符串 - Truncate a string
解题思路:使用判断语句;

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

truncate("A-tisket a-tasket A green and yellow basket", 11);

6.分割数组 - Chunky Monkey

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

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

7.比较字符串 - Mutations
解题思路:

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

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

8.过滤数组假值 - Falsy Bouncer

function bouncer(arr) {
  // 请把你的代码写在这里
  var newArr = [];
  arr.map(function(val){
    if(val){
      return newArr.push(val);
    }
  });
  return newArr;
}

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

更好的解决方法:

function bouncer(arr) {
 // 请把你的代码写在这里
 return arr.filter(Boolean);
}
bouncer([7, "ate", "", false, 9]);

9.摧毁数组 - Seek and Destroy
解题思路:判断是否与原数组相同。

function destroyer(arr) {
  // 请把你的代码写在这里
  var secondArr = [];
  var args = Array.prototype.slice.call(arguments);
  for(var i= 0;i<arr.length;i++){
    for(var j=0;j<args.length;j++){
    if(arr[i]===args[j]){
      delete arr[i];
    }
    }
  }
  return arr.filter(Boolean);
}

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

10.数组排序并找出元素索引 - Where do I blong

function where(arr, num) {
  // 请把你的代码写在这里
  arr.push(num);
  arr.sort(function(a,b){
    return a-b;
 });
  return arr.indexOf(num);
}

where([40, 60], 50);

11.凯撒密码 - Caesars Cipher
解题思路:对字符串进行逐个解码编译,并直接输出。

function rot13(str) { // LBH QVQ VG!
  // 请把你的代码写在这里
  var num = 0;
  var myString = "";
  for (var i = 0; i < str.length; i++) {
    num = str.charCodeAt(i);
    if (num >= 65) {
      num += 13;
    }
    if (num > 90) {
      num -= 26;
    }
    myString += String.fromCharCode(num);
  }
  return myString;
}

rot13("SERR PBQR PNZC"); // 你可以修改这一行来测试你的代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值