FreeCodeCamp基础算法题答案解析.docx
- 文档编号:1826736
- 上传时间:2022-10-24
- 格式:DOCX
- 页数:7
- 大小:16.97KB
FreeCodeCamp基础算法题答案解析.docx
《FreeCodeCamp基础算法题答案解析.docx》由会员分享,可在线阅读,更多相关《FreeCodeCamp基础算法题答案解析.docx(7页珍藏版)》请在冰豆网上搜索。
FreeCodeCamp基础算法题答案解析
FreeCodeCamp基礎算法題答案解析
總結下FreeCodeCamp基礎算法題:
ReverseaString
先把字符串轉化成數組,再借助數組的reverse方法翻轉數組順序,最後把數組轉化成字符串。
functionreverseString(str){
returnstr.split('').reverse().join('');
}
reverseString("hello");
FactorializeaNumber
計算一個整數的階乘,如果用字母n來代表一個整數,階乘代表著所有小於或等於n的整數的乘積。
階乘通常簡寫成n!
例如:
5!
=12345=120
functionfactorialize(num){
if(num<0){
return-1;
}elseif(num===0){
return1;
}
else{
returnnum*factorialize(num-1);
}
}
factorialize(5);//120
CheckforPalindromes
如果給定的字符串是回文,返回true,反之,返回false。
如果一個字符串忽略標點符號、大小寫和空格,正著讀和反著讀一模一樣,那麼這個字符串就是palindrome(回文)。
functionpalindrome(str){
returnstr.replace(/[\W_]/g,'').toLowerCase()===str.replace(/[\W_]/g,'').toLowerCase().split('').reverse().join('');
}
FindtheLongestWordinaString
找到提供的句子中最長的單詞,並計算它的長度。
函數的返回值應該是一個數字。
//法一
/*functionfindLongestWord(str){
myStr=str.split('');
varlongest=0;
for(vari=0;ilongest){
longest=myStr[i].length;
}
}
returnlongest;
}
*/
//法二
functionfindLongestWord(str){
myStr=str.split('');
vararrnum=[];
for(i=0;i arrnum.push(myStr[i].length); } returnMath.max.apply(null,arrnum); } findLongestWord("Thequickbrownfoxjumpedoverthelazydog"); TitleCaseaSentence //法一 functiontitleCase(str){ vararr=str.toLowerCase().split(''); for(i=0;i varchar=arr[i].charAt(0); arr[i]=arr[i].replace(char,char.toUpperCase()); } returnarr.join(''); } //法二 functiontitleCase(str){ vararr=str.toLowerCase().split(''); for(variinarr){ arr[i]=arr[i].replace(arr[i].charAt(0),arr[i].charAt(0).toUpperCase()); } returnarr.join(''); } titleCase("I'malittleteapot"); ReturnLargestNumbersinArrays 右邊大數組中包含了4個小數組,分別找到每個小數組中的最大值,然後把它們串聯起來,形成一個新數組。 functionlargestOfFour(arr){ varnewArr=[]; for(vari=0;i newArr[i]=Math.max.apply(null,arr[i]); } returnnewArr; } largestOfFour([[4,5,1,3],[13,27,18,26],[32,35,37,39],[1000,1001,857,1]]); ConfirmtheEnding 檢查一個字符串(str)是否以指定的字符串(target)結尾。 functionconfirmEnding(str,target){ returnstr.substr(-target.length)===target; } confirmEnding("Bastian","n"); Repeatastringrepeatastring 重複一個指定的字符串num次,如果num是一個負數則返回一個空字符串。 functionrepeat(str,num){ returnnum>0? str.repeat(num): ""; } repeat("abc",3); Truncateastring 截斷一個字符串! 如果字符串的長度比指定的參數num長,則把多餘的部分用...來表示。 切記,插入到字符串尾部的三個點號也會計入字符串的長度。 但是,如果指定的參數num小於或等於3,則添加的三個點號不會計入字符串的長度。 functiontruncate(str,num){ if(str.length3){ num-=3; } vartruncted=str.substr(0,num); returntruncted+"..."; } } truncate("A-tisketa-tasketAgreenandyellowbasket",11); ChunkyMonkey 把一個數組arr按照指定的數組大小size分割成若干個數組塊。 varmyArr=[]; for(i=0;i functionchunk(arr,size){ varmyArr=[]; for(i=0;i myArr.push(arr.slice(i,size+i)); } returnmyArr; } chunk(["a","b","c","d"],2); SlasherFlick 返回一個數組被截斷n個元素後還剩餘的元素,截斷從索引0開始。 functionslasher(arr,howMany){ returnarr.slice(howMany); } slasher([1,2,3],2); Mutations 如果數組第一個字符串元素包含了第二個字符串元素的所有字符,函數返回true。 functionmutation(arr){ vararr1=arr[0].toLowerCase(); vararr2=arr[1].toLowerCase(); for(vari=0;i if(arr1.indexOf(arr2[i])<0)returnfalse; } returntrue; } mutation(["hello","hey"]); FalsyBouncer 刪除數組中的所有假值。 在JavaScript中,假值有false、null、0、""、undefined和NaN。 functionbouncer(arr){ returnarr.filter(Boolean); } bouncer([7,"ate","",false,9]); 等同於: functionbouncer(arr){ returnarr.filter(function(item,index,array){ returnBoolean(item); }); } SeekandDestroy 實現一個摧毀(destroyer)函數,第一個參數是待摧毀的數組,其餘的參數是待摧毀的值。 functiondestroyer(arr){ vararr1=Array.from(arguments)[0]; vararr2=Array.from(arguments).slice (1); returnarr1.filter(function(item){ returnarr2.indexOf(item)<0; }); } destroyer([1,2,3,1,2,3],2,3); WheredoIbelong 先給數組排序,然後找到指定的值在數組的位置,最後返回位置對應的索引。 functionwhere(arr,num){ arr.push(num);//插入 arr.sort(function(a,b){ returna-b;//排序 }); returnarr.indexOf(num); } where([40,60],50); 下面我們來介紹風靡全球的凱撒密碼Caesarcipher,又叫移位密碼。 移位密碼也就是密碼中的字母會按照指定的數量來做移位。 一個常見的案例就是ROT13密碼,字母會移位13個位置。 由'A'? 'N','B'? 'O',以此類推。 寫一個ROT13函數,實現輸入加密字符串,輸出解密字符串。 所有的字母都是大寫,不要轉化任何非字母形式的字符(例如: 空格,標點符號),遇到這些特殊字符,跳過它們。 functionrot13(str){//LBHQVQVG! varindex=null; vartemp=""; var_A="A".charCodeAt(0); var_Z="Z".charCodeAt(0); varmid=(_A+_Z)/2; for(i=0;i=_A&&index<=mid){ temp+=String.fromCharCode(index+13); }elseif(indexmid){ temp+=String.fromCharCode(index-13); } else{ temp+=String.fromCharCode(index); } } returntemp; } //傳入的字符串都是大寫,而大寫字母A到Z的Unicode值是升序排列的。 加密算法的核心是前13個字母Unicode值加13,後13個字母Unicode值減13從字母表重新回滾。 而其他大寫字母以外的空白符
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FreeCodeCamp 基础 算法 答案 解析