美文网首页freeCodeCamp
FCC初级算法题solution

FCC初级算法题solution

作者: 董懂同学 | 来源:发表于2017-04-01 10:02 被阅读71次

    1. Reverse a String

    /*
    1.分割数组
    2.反转数组
    3.将数组链接成字符串
    */
    function reverseString(str) {
        return str.split('').reverse().join('');
    }
    console.log(reverseString("hello world,how are you?"));
    

    2. Factorialize a Number

    /*
    将小于此数的所用数用for循环遍历,相乘
    */
    function factorialize(num) {
        var i = 1;
        var total = 1;
        for (i = 1; i <= num; i++) {
            total *= i;
        }
        return total;
    }
    console.log(factorialize(5));
    

    3. Check for Palindromes

    function palindrome(str) {
      var re = /[^a-zA-Z1-9]/gi;          //匹配所有非字母和数字的字符
      str = str.toLowerCase();            //将字符串转换为小写
      str = str.replace(re,'');              //用正则表达式将所有的非字母和数字移除
      var newstr = str.split('').reverse().join('');    //翻转字符串并赋给新的字符串
      return str===newstr;            //比较新字符串和旧字符串是否一样
    }
    console.log(palindrome("eye"));
    

    4. Find the Longest Word in a String

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

    思路:
    1.将字符串分割成数组
    2.通过map遍历数组并得到一个有着数组元素长度的数组
    3.给新的数组元素从大到小排序
    4.返回排序后数组的第一个元素

    5. Title Case a Sentence

    function titleCase(str) {
     var newstr = str.toLowerCase().split(' ').map(function(val){
       return val[0].toUpperCase()+val.slice(1);
     }).join(' ');
     return newstr;
    }
    

    思路:
    1.先将字符串全部变成小写,然后分割成数组
    2.使用map遍历每一个数组元素
    3.将每个数组元素的第一位变成大写
    4.将数组元素除了第一位分割出来
    5.将变成大写的第一位和其他部分结合
    6.将新的数组元素连接成字符串
    7.返回新字符串。

    6. Return Largest Numbers in Arrays

    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;
    }
    

    思路:
    1.新建一个数组
    2.通过for循环遍历数组第一层
    3.给第二层数组通过sort从大到小排序
    4将排序好的第二层数的第一位组通过push()方法装进新数组
    5.返回这个新数组

    7. Confirm the Ending

    function confirmEnding(str, target) {
      var newstr = str.substring(str.length-target.length);
      return newstr===target;
    }
    

    思路:
    1.截取最后多少位,比较新字符串与目标字符串
    2.利用substring()截取最后的多少位

    8. Repeat a string repeat a string

    function repeatStringNumTimes(str, num) {
      var newstr;
      if(num<0){
        return "";
      }else{
        return str.repeat(num);
      }  
    }
    

    9. Truncate a string

    function truncateString(str, num) {
      if(num>=str.length){
        return str;
      }else{
        return str.slice(0,(num>3?num-3:num))+'...';
      }
    }
    

    10. Chunky Monkey

    function chunkArrayInGroups(arr, size) {
      var newarr = [],i,k;
       for(i=0,k=-1;i<arr.length;i++){
         if(i%size===0){
           k++;
           newarr[k]=[];
         }
         newarr[k].push(arr[i]);
       }
      return newarr;
    }
    

    11. Slasher Flick

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

    12. Mutations

    function mutation(arr) {
      var testStr = arr[1].toLowerCase();
        var targetStr = arr[0].toLowerCase();
        for (var i = 0; i < testStr.length; i++) {
            if (targetStr.indexOf(testStr[i])<0) {
                return false;
            }
            
        }
      return true;
    }
    

    13. Falsy Bouncer

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

    14. Seek and Destroy

    function destroyer(arr) {
      // Remove all the values
      var args = Array.prototype.slice.call(arguments);
      args.splice(0,1);
      return arr.filter(function(element){
        return args.indexOf(element) === -1;
      });
    }
    

    15. Where do I belong

    function getIndexToIns(arr, num) {
      arr = arr.sort(function(a,b) {return a -b;  });
        var i;
        for (i = 0; i < arr.length; i++) {
            if(arr[i] >= num)
            return i; 
        }
      return i;
    }
    

    16. Caesars Cipher

    function rot13(str) { // LBH QVQ VG!
        var newstr = [];
        for (var i = 0; i < str.length; i++) {
            if (str.charCodeAt(i)>77 && str.charCodeAt(i)<91) {
                newstr.push(str.charCodeAt(i)-13);
            }else if(str.charCodeAt(i)>64 && str.charCodeAt(i)<=77){
                newstr.push(str.charCodeAt(i)+13);  
            }else{
              newstr.push(str.charCodeAt(i));
            }
        }
        for (var j = 0; j < newstr.length; j++) {
            newstr[j]=String.fromCharCode(newstr[j]);
        }
        return newstr.join('');
    }
    

    相关文章

      网友评论

        本文标题:FCC初级算法题solution

        本文链接:https://www.haomeiwen.com/subject/xygbottx.html