成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

FreeCodeCamp中級(jí)算法題答案

leonardofed / 591人閱讀

摘要:法一法二使用給定的參數(shù)對(duì)句子執(zhí)行一次查找和替換,然后返回新句子。法一法二把指定的字符串翻譯成。在每一個(gè)數(shù)組中將給定的字母作為第一個(gè)堿基返回。法一后項(xiàng)減去前項(xiàng)法二檢查一個(gè)值是否是基本布爾類型,并返回或。基本布爾類型即和。

Diff Two Arrays

比較兩個(gè)數(shù)組,然后返回一個(gè)新數(shù)組,該數(shù)組的元素為兩個(gè)給定數(shù)組中所有獨(dú)有的數(shù)組元素。換言之,返回兩個(gè)數(shù)組的差異。

function diff(arr1, arr2) {
   var a1=arr1.filter(function(val){
        return arr2.indexOf(val)< 0;
   });
   var a2=arr2.filter(function(val){
       return arr1.indexOf(val)< 0;
   });
   return a1.concat(a2);
}

diff([1, 2, 3, 5], [1, 2, 3, 4, 5]);
Roman Numeral Converter

將給定的數(shù)字轉(zhuǎn)換成羅馬數(shù)字。
所有返回的 羅馬數(shù)字 都應(yīng)該是大寫形式。
可參考Here

function convert(num) {
  var nums = [1000,900,500,400,100,90,50,40,10,9,5,4,1];
  var romans =["m","cm","d","cd","c","xc","l","xl","x","ix","v","iv","i"];
  var str = "";
  nums.forEach(function(item,index,array){
    while(num >= item){
      str += romans[index];
      num -= item;
    }
  });
  
 return str.toUpperCase();
}
convert(36);
Where art thou

寫一個(gè) function,它遍歷一個(gè)對(duì)象數(shù)組(第一個(gè)參數(shù))并返回一個(gè)包含相匹配的屬性-值對(duì)(第二個(gè)參數(shù))的所有對(duì)象的數(shù)組。如果返回的數(shù)組中包含 source 對(duì)象的屬性-值對(duì),那么此對(duì)象的每一個(gè)屬性-值對(duì)都必須存在于 collection 的對(duì)象中。

例如,如果第一個(gè)參數(shù)是 [{ first: "Romeo", last: "Montague" }, { first: "Mercutio", last: null }, { first: "Tybalt", last: "Capulet" }],第二個(gè)參數(shù)是 { last: "Capulet" },那么你必須從數(shù)組(第一個(gè)參數(shù))返回其中的第三個(gè)對(duì)象,因?yàn)樗俗鳛榈诙€(gè)參數(shù)傳遞的屬性-值對(duì)。

//法一
function where(collection, source) {
  var keys =  Object.keys(source);
  return collection.filter(function(obj){
      return keys.every(function(item){
          return obj.hasOwnProperty(item) && obj[item] === source[item];
      });
  });
}
//法二
function where(collection, source) {
  var keys =  Object.keys(source);
  return collection.filter(function(obj){
      return keys.every(function(item){
          return obj.hasOwnProperty(item) && obj[item] === source[item];
      });
  });
}

where([{ first: "Romeo", last: "Montague" }, { first: "Mercutio", last: null }, { first: "Tybalt", last: "Capulet" }], { last: "Capulet" });
Search and Replace

使用給定的參數(shù)對(duì)句子執(zhí)行一次查找和替換,然后返回新句子。第一個(gè)參數(shù)是將要對(duì)其執(zhí)行查找和替換的句子。第二個(gè)參數(shù)是將被替換掉的單詞(替換前的單詞)。第三個(gè)參數(shù)用于替換第二個(gè)參數(shù)(替換后的單詞)。
注意:替換時(shí)保持原單詞的大小寫。例如,如果你想用單詞 "dog" 替換單詞 "Book" ,你應(yīng)該替換成 "Dog"。

//法一
function myReplace(str, before, after) {
    if(before[0] === before[0].toUpperCase()){
        after = after[0].toUpperCase() + after.slice(1);
    }
    str = str.replace(before,after);
    return str;
}


//法二
function myReplace(str, before, after) {
  var re = /^[A-Z]/;
  if(re.test(before.charAt(0))){
    after = after.charAt(0).toUpperCase() + after.slice(1);
  }
  str = str.replace(before,after);
  return str;
}
myReplace("A quick brown fox jumped over the lazy dog", "jumped", "leaped");
Pig Latin

把指定的字符串翻譯成 pig latin。
Pig Latin 把一個(gè)英文單詞的第一個(gè)輔音或輔音叢(consonant cluster)移到詞尾,然后加上后綴 "ay"。
如果單詞以元音開始,你只需要在詞尾添加 "way" 就可以了。

function translate(str) {
    var myStr = "";
    var regex = /[aeiou]/gi;
    if(str[0].match(regex)){
        myStr = str + "way";
    }else{
        var index = str.indexOf(str.match(regex)[0]);
        myStr = str.substr(index) + str.substring(0,index) + "ay";
    }
  return myStr;
}

translate("consonant");//onsonantcay
DNA Pairing

DNA 鏈缺少配對(duì)的堿基。依據(jù)每一個(gè)堿基,為其找到配對(duì)的堿基,然后將結(jié)果作為第二個(gè)數(shù)組返回。
Base pairs(堿基對(duì)) 是一對(duì) AT 和 CG,為給定的字母匹配缺失的堿基。
在每一個(gè)數(shù)組中將給定的字母作為第一個(gè)堿基返回。
例如,對(duì)于輸入的 GCG,相應(yīng)地返回 [["G", "C"], ["C","G"],["G", "C"]]
字母和與之配對(duì)的字母在一個(gè)數(shù)組內(nèi),然后所有數(shù)組再被組織起來封裝進(jìn)一個(gè)數(shù)組。

function pair(str) {
  var arr = str.split("");
  var pair = "";
  return arr.map(function(item){
      switch(item){
          case "C":
              pair = "G";
            break;
          case "G":
              pair = "C";
            break;
        case "A":
            pair = "T";
            break;
        case "T":
            pair = "A";
             break;
      }
      return [item,pair];
  });
}

pair("GCG");
Missing letters

從傳遞進(jìn)來的字母序列中找到缺失的字母并返回它。
如果所有字母都在序列中,返回 undefined。

法一:
    var arr = str.split("");
    for(var i = 0;i < arr.length;i++){
        var minus = arr[i+1].charCodeAt() - arr[i].charCodeAt();/后項(xiàng)減去前項(xiàng)/
        if( minus > 1){
            return String.fromCharCode(arr[i].charCodeAt()+1);
        }
    }
法二:
function fearNotLetter(str) {
    var compare = str.charCodeAt(0),missing;
    str.split("").map(function(item,index){
        if(str.charCodeAt(index) === compare){
            ++ compare;
        }else{
            missing = String.fromCharCode(compare);
        }
    });
    return missing;
}
fearNotLetter("abce");
Boo who

檢查一個(gè)值是否是基本布爾類型,并返回 true 或 false。
基本布爾類型即 true 和 false。

function boo(bool) {
 return typeof bool === "boolean";
}

boo(true);
Sorted Union

寫一個(gè) function,傳入兩個(gè)或兩個(gè)以上的數(shù)組,返回一個(gè)以給定的原始數(shù)組排序的不包含重復(fù)值的新數(shù)組。
例如:unite([1, 3, 2], [5, 2, 1, 4], [2, 1]) 應(yīng)該返回 [1, 3, 2, 5, 4]。

function unite(arr1, arr2, arr3) {
  var args = Array.from(arguments);
  var arr = args.reduce(function(prev,cur){
    return prev.concat(cur);
  });
  return arr.filter(function(item,index,arr){
    return arr.indexOf(item) === index;  
  });
}
unite([1, 3, 2], [5, 2, 1, 4], [2, 1]);
Convert HTML Entities

將字符串中的字符 &、<、>、" (雙引號(hào)), 以及 " (單引號(hào))轉(zhuǎn)換為它們對(duì)應(yīng)的 HTML 實(shí)體。

法一
function convert(str) {
  str = str.replace(/&/g,"&").replace(//g,">")
           .replace(/"/g,""").replace(/"/g,"'");
  return str;
}
convert("Dolce & Gabbana");
法二:
function convert(str) {
    var htmlEntities={
        "&":"&",
        "<":"<",
        ">":">",
        """:""",
        """:"'",
    };
    return str.split("").map(function(entity){
        return htmlEntities[entity] || entity;
    }).join("");
}
convert("Dolce & Gabbana");

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/86705.html

相關(guān)文章

  • FreeCodeCamp 初級(jí)算法 - 翻轉(zhuǎn)字符串

    摘要:比如,就是獲取第一個(gè)字符。后面的暫時(shí)不會(huì)執(zhí)行直到遇見傳入的字符串為,因?yàn)橛辛朔祷刂?,就不?huì)再去調(diào)用了。 原文鏈接:http://singsing.io/blog/2017/... 翻轉(zhuǎn)字符串 (Reverse a String) 題目鏈接 中文鏈接 英文鏈接 級(jí)別:初級(jí) (Basic Algorithm Scripting) 問題解釋 這個(gè) function 接收一個(gè)字符串參數(shù),...

    OpenDigg 評(píng)論0 收藏0
  • FreeCodeCamp基礎(chǔ)算法答案解析

    摘要:總結(jié)下基礎(chǔ)算法題先把字符串轉(zhuǎn)化成數(shù)組,再借助數(shù)組的方法翻轉(zhuǎn)數(shù)組順序,最后把數(shù)組轉(zhuǎn)化成字符串。檢查一個(gè)字符串是否以指定的字符串結(jié)尾。刪除數(shù)組中的所有假值。加密算法的核心是前個(gè)字母值加,后個(gè)字母值減從字母表重新回滾。 總結(jié)下FreeCodeCamp基礎(chǔ)算法題: Reverse a String 先把字符串轉(zhuǎn)化成數(shù)組,再借助數(shù)組的reverse方法翻轉(zhuǎn)數(shù)組順序,最后把數(shù)組轉(zhuǎn)化成字符串。 fu...

    sihai 評(píng)論0 收藏0
  • 我是如何從零開始學(xué)習(xí)前端的

    摘要:相關(guān)頻道最后的坦白最后我得承認(rèn)這一次我又標(biāo)題黨了無非是想吸引更多前端初學(xué)者進(jìn)來,希望大家都能少走一些彎路,也希望那些從零開始自學(xué)前端的同學(xué)更有勇氣去面對(duì)自己的選擇。 我是怎么走上前端開發(fā)這條路? 首先,我是個(gè)文科生,大學(xué)里只學(xué)過vb,覺得計(jì)算機(jī)編程這東西太玄乎,不是我玩得轉(zhuǎn)的。 后來機(jī)緣巧合去做了一家互聯(lián)網(wǎng)創(chuàng)業(yè)公司的HR,閱了上千份程序員的簡(jiǎn)歷,面了上百個(gè)不同水平不同領(lǐng)域的程序員。跟程...

    mykurisu 評(píng)論0 收藏0
  • W3Cschool——中級(jí)腳本算法

    摘要:依據(jù)每一個(gè)堿基,為其找到配對(duì)的堿基,然后將結(jié)果作為第二個(gè)數(shù)組返回。堿基對(duì)是一對(duì)和,為給定的字母匹配缺失的堿基。輸入檢查算法挑戰(zhàn)檢查一個(gè)值是否是基本布爾類型,并返回或?;静紶栴愋图春?。二進(jìn)制字符串是以空格分隔的。 showImg(https://segmentfault.com/img/remote/1460000010866723); 前言 W3Cschool上有個(gè)編程挑戰(zhàn),里面的題...

    gecko23 評(píng)論0 收藏0
  • 前端20個(gè)真正靈魂拷問,吃透這些你就是中級(jí)前端工程師 【上篇】

    摘要:還是老規(guī)矩,從易到難吧傳統(tǒng)的定時(shí)器,異步編程等。分配對(duì)象時(shí),先是在空間中進(jìn)行分配。內(nèi)存泄漏內(nèi)存泄漏是指程序中己動(dòng)態(tài)分配的堆內(nèi)存由于某種原因程序未釋放或無法釋放,造成系統(tǒng)內(nèi)存的浪費(fèi),導(dǎo)致程序運(yùn)行速度減慢甚至系統(tǒng)崩潰等嚴(yán)重后果。 showImg(https://segmentfault.com/img/bVbwkad?w=1286&h=876); 網(wǎng)上參差不棄的面試題,本文由淺入深,讓你在...

    mdluo 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<