FreeCodeCamp基础算法题答案解析
2017-08-25 23:08
579 查看
Reverse a String翻转字符串
function reverseString(str) { return str.split("").reverse().join(""); }
Factorialize a Number阶乘
function factorial(num){ if(num<0){ num=-1; } else if(num==0 || num==1){ num=1; } else{ for(var i=num-1; i>=1; i++){ num*=i; } } return num; }
Check for Palindromes回文检验
function palindrome(str) { //去掉非字母数字、空白字符和下划线 str = str.replace( /[\W\s_]/g,"").toLowerCase(); return str === str.split("").reverse().join(""); }
Find the Longest Word in a String寻找句中最长单词
得到最长单词的长度。function findLongestWord(str){ var array=str.split(' '); array.sort(function(a,b){ return b.length-a.length; }) return array[0]; }
Title Case a Sentense句中单词首字母大写
function titleCase(str) { var arr=str.toLowerCase().split(" "); var narr=[]; for(var i=0;i<arr.length;i++){ arr[i]=arr[i][0].toUpperCase()+arr[i].slice(1); }//首字母大写+截取第二到最后一个字母 return arr.join(" "); }
Return Largest Numbers in Arrays获得数组的每个子数组中最大的数字
function largestOfFour(arr){ var array=[]; for(var i=0; i<arr.length;i++){ //遍历 arr[i].sort(function(a,b){ return b-a; //排序 }) array.push(arr[i][0]); //取值 } return array; //返回 }
Confirm the Ending检测一个字符串是否以另一个字符串结尾
function confirmEnding(str, target) { //substr(start,end); str长度减去target长度=start,target长度=end return target===str.substr(str.length-target.length,target.length); }
Repeat a string重复字符串
function repeat(str, num) { var strn=""; var i=0; while(i<num){ strn+=str; i++; } return strn; }
Truncate a string截断字符串
function truncate(str,num){var string="";
if(num<str.length){
if(num<=3){
string=str.slice(0,num)+"...";
}
else{
string=str.slice(0,num-3)+"...";
}
return string;
}
return str;
}
如果字符串的长度比指定的参数num长,则把多余的部分用...来表示。
切记,插入到字符串尾部的三个点号也会计入字符串的长度。
但是,如果指定的参数num小于或等于3,则添加的三个点号不会计入字符串的长度。
Chunky Monkey将数组元素分成指定个数的子数组
将数组元素(根据给定的元素个数(示例代码中的size))划分为若干个子数组,如果最后一组数组元素个数不够,也算成一组。
function chunk(arr, size) { var narr=[]; for(var i=0;i<arr.length;i+=size){ narr.push(arr.slice(i,i+size)); }//隔size个元素划分一次(push到新数组中) return narr; }
Slasher Flick从数组中去掉指定个数元素
从数组中去掉前n个元素,得的到新数组。function slasher(arr, howMany) { return arr.slice(howMany); //或者 //return arr.splice(howMany); }
Mutations一个字符串中是否包含另一个字符串中的所有字符
忽略顺序和大小写。示例代码中的两个字符串是一个数组的两个元素,如:["str1","str2"]。题目见fcc-mutationsfunction mutation(arr) { for(var i=0;i<arr[1].length;i++){ if(arr[0].toLowerCase().indexOf(arr[1][i].toLowerCase())===-1){ return false; }//将字符串2中的每一个字符与字符串一的 } return true; }
Falsy Bouncer去除数组中的假值元素
function bouncer(arr){ return arr.filter(Boolean); }
JavaScript中,假值有
false、
null、
0、
""、
undefined和
NaN。
Seek and Destroy从数组中删除指定元素
例如从数组[1,2,3]中删除1,2:destoryer([1,2,3],2,3)。
function destroyer(arr) { var narr = []; for(var i = 1; i < arguments.length; i++){ narr.push(arguments[i]); } narr = arr.filter(function(item,index,array){ return narr.indexOf(item) ===-1;//从narr中选出在arr中找不到的元素 }); return narr; }
Where do I belong判断一个数字在数组中的索引位置
数组元素(此代码例子中为数字数组)要按数值进行从小到大排列,求得某个数字放入排列好的数组中后的索引位置(该数字遵循大小顺序放入数组中,该数字与数组中元素值一致则放在相同大小的元素前方)。如3放在数组[1,3,5,2,4,6]中的索引值是2。题目见wheredo I belong。
function where(arr,num){ arr.push(num); arr.sort(function(a,b){ return a-b; //排序 }) return arr.indexOf(num); }
ROT13解密
ROT13-维基百科。为了使代码不那么冗长,直接用了查得的字母char code数值。
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(""); }
相关文章推荐
- FreeCodeCamp日志-基础算法编程完成
- FreeCodeCamp日志-基础算法编程完成
- freeCodeCamp中一些算法练习的实现
- FreeCodeCamp 高级算法(个人向)
- FreeCodeCamp初级算法
- freeCodeCamp学习记录——初级算法[01]翻转字符串
- FreeCodeCamp 前端初级算法(个人向)
- freecodecamp 算法部分刷题笔记
- FreeCodeCamp日志-基础前端项目完成
- FreeCodeCamp日志-基础前端项目完成
- FreeCodeCamp备查簿(6:#161-#190--JavaScript基础)
- FreeCodeCamp 中级算法(个人向)
- FreeCodeCamp备查簿(5:#132-#160--JavaScript基础)
- Intermediate Algorithm Scripting FreeCodeCamp中级算法
- freeCodeCamp学习:js之实现21点算法
- 数据库基础知识参考试题及答案解析
- freecodecamp JavaScript学习(四)
- java基础解析系列(四)---LinkedHashMap的原理及LRU算法的实现
- 【freecodecamp】jQuery知识点
- [FreeCodeCamp-Javascript]Advanced Algorithm