FreeCodeCamp算法题
Reverse a String -翻转字符串
function reverseString(str) {
// 请把你的代码写在这里
return str.split('').reverse().join('');
}
reverseString("hello");
Factorialize a Number-阶乘
function factorialize(num) {
// 请把你的代码写在这里
var sum=1;
if(num===0){return 1;}
for(var i=1;i<=num;i++){
sum*=i;
}
return sum;
}
factorialize(5);
Check for Palindromes-检查回文字符串
function palindrome(str) {
// 请把你的代码写在这里
str = str.replace( /[\W\s_]/g,"").toLowerCase();
return str === str.split("").reverse().join("");
}
palindrome("race car");
Find the Longest Word in a String-找出最长单词
function findLongestWord(str) {
// 请把你的代码写在这里
var arr=str.split(' ');
arr.sort(function(a,b){return b.length-a.length;});
return arr[0].length;
}
findLongestWord("The quick brown fox jumped over the lazy dog");
Title Case a Sentence -句中单词首字母大写
function titleCase(str) {
// 请把你的代码写在这里
var arr=str.split(' ');
for(var i=0;i<arr.length;i++){
arr[i]=arr[i][0].toUpperCase()+arr[i].slice(1).toLowerCase();
}
return arr.join(' ');
}
titleCase("I'm a little tea pot");
Return Largest Numbers in Arrays -找出多个数组中的最大数
function largestOfFour(arr) {
// 请把你的代码写在这里
var newArr=[];
for(var i=0;i<arr.length;i++){
newArr[i]=arr[i].sort(function(a,b){return b-a;})[0];
}
return newArr;
}
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
Confirm the Ending -检查字符串结尾
function confirmEnding(str, target) {
// 请把你的代码写在这里
return str.substr(str.length-target.length,str.length)==target;
}
confirmEnding("Bastian", "n");
Repeat a string repeat a string -重复输出字符串
function repeat(str, num) {
// 请把你的代码写在这里
if(num<0){
return '';
}else{
var newStr='';
for(var i=1;i<=num;i++){
newStr+=str;
}
return newStr;
}
}
repeat("abc", 3);
Truncate a string -截断字符串
function truncate(str, num) {
// 请把你的代码写在这里
if(num<=3){
return str.slice(0,num)+'...';
}else if(num>=str.length){
return str;
}else{
return str.slice(0,num-3)+'...';
}
}
truncate("Peter Piper picked a peck of pickled peppers", 14);
Chunky Monkey -猴子吃香蕉, 分割数组
function chunk(arr, size) {
// 请把你的代码写在这里
var newArr=[];
for(var i=0;i<arr.length;i+=size){
newArr.push(arr.slice(i,i+size));
}
return newArr;
}
chunk([0, 1, 2, 3, 4, 5], 2);
Slasher Flick -截断数组
function slasher(arr, howMany) {
// 请把你的代码写在这里
return arr.splice(howMany);
}
slasher([1, 2, 3], 2);
Mutations -比较字符串
function mutation(arr) {
// 请把你的代码写在这里
var newArr=arr[1].toLowerCase().split('');
for(var i=0;i<newArr.length;i++){
if(arr[0].toLowerCase().indexOf(newArr[i])===-1){
return false;
}
}
return true;
}
mutation(["hello", "hey"]);
Falsy Bouncer-过滤数组假值
function bouncer(arr) {
// 请把你的代码写在这里
return arr.filter(Boolean);
}
bouncer([1, null, NaN, 2, undefined]);
Seek and Destroy-摧毁数组
function destroyer(arr) {
var newArr = [];
for(var i = 1; i < arguments.length; i++){
newArr.push(arguments[i]);
}
newArr = arr.filter(function(item,index,array){
return newArr.indexOf(item) ===-1;//从narr中选出在arr中找不到的元素
});
return newArr;
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);
Where do I belong-数组排序并找出元素索引
function where(arr, num) {
// 请把你的代码写在这里
arr.push(num);
arr.sort(function(a,b){return a-b;});
for(var i=0;i<arr.length;i++){
if(arr[i]===num){
return i;
}
}
//return arr.indexOf(num);
}
where([40, 60], 50);
Caesars Cipher-凯撒密码
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("");
}
rot13("SERR PBQR PNZC"); // 你可以修改这一行来测试你的代码