您的位置:首页 > 其它

FreeCodeCamp初级算法

2017-08-01 20:21 453 查看

FreeCodeCamp里面的初级算法,思路可能不是最好的,但能达到效果,顺利通关。写的不好,多多包涵。

// 算法

// 1.Reverse a String 翻转字符串

function reverseString(str) {
// 请把你的代码写在这里
// 1.分割字符串 成为数组
var arr = str.split("");
// 2. 数组倒转
arr.reverse();
// 3.数组连接为字符串
var newString = arr.join("");
return newString;
}


// 2. Factorialize a Number 计算一个整数的阶乘

/*

* 计算一个整数的阶乘

如果用字母n来代表一个整数,阶乘代表着所有小于或等于n的整数的乘积。

阶乘通常简写成 n!

例如: 5! = 1 * 2 * 3 * 4 * 5 = 120

* */

function factorialize(num) {
// 请把你的代码写在这里
// 1.循环获得所有数字,放进数组里面
var arr = [];
for (var i = num; i > 0; i--) {
arr.push(i);
}
// 2.相乘 利用 map来快速
var times = 1;
arr.map(function (val) {
times *= val;
});
return times;
}


// 3.Check for Palindromes 检查回文字符串

/*

* 如果一个字符串忽略标点符号、大小写和空格,正着读和反着读一模一样,那么这个字符串就是palindrome(回文)。

* */

function palindrome(str) {
// 请把你的代码写在这里
// 1. 把字符串分割成数组
// 1.1 去除空格 符号   /[^A-Za-z0-9]/g  匹配数字和字母
var re = /[\W]/g;
// var re = /[^A-Za-z0-0]/g;
// 1.2 全部转为小写,然后匹配到字母和数字,这样就过滤到了符号
var lowRegStr = str.toLowerCase().replace(re, '');
// 1.4 分割
var arr = str.split("");
// 1.5 提取纯字符串
var zStr = arr.join("");
// 2. 数组倒转
arr.reverse();
// 3.数组连接为字符串
var newString = arr.join("");
// 4.比较
return zStr === newString;
}
var re = /[\W_]/g;
// 或者 var re = /[^A-Za-z0-9]/g;
// var lowRegStr = str.toLowerCase().replace(re,'');
// var reverseStr = lowRegStr.split('').reverse().join('');
// return reverseStr === lowRegStr;


// 4.Find the Longest Word in a String 寻找句子中最长的单词

function findLongestWord(str) {
// 请把你的代码写在这里
// 1.分割为一个个单词
var arr = str.split(' ');
// 2. 比较每一个单词的长度
var count = 0;
for (var i = 0; i < arr.length; i++) {
if (arr[i].length > count) {
count = arr[i].length;
}
}
return count;
}


// 5. Title Case a Sentence 句中单词首字母大写

function titleCase(str) {
// 请把你的代码写在这里
// 1. 分割句子为单词
var arrWord = str.split(' ');
// 2. 分割单词为字母
var resultArr = [];
for (var i = 0; i < arrWord.length; i++) {
var arrChar = arrWord[i].split('');
var lowArr = [];
// 全部转为小写
for (var j = 0; j < arrChar.length; j++) {
if (j == 0) {
lowArr.push(arrChar[0].toUpperCase());
} else  {
lowArr.push(arrChar[j].toLowerCase());
}
}
// 连接为单词
var word = lowArr.join('');
resultArr.push(word);
}
// 4. 单词连接成句子返回
var resultString = resultArr.join(' ');
return resultString;
}


// 6. Return Largest Numbers in Arrays 返回数组中的最大值 二维数组

function largestOfFour(arr) {
// 请把你的代码写在这里
// 循环数组,取出最大值,放入新的数组
var resultArr = [];
for (var i = 0; i < arr.length; i++) {
var bignum = 0;
for (var j = 0; j < arr[i].length; j++) {
if (arr[i][j] > bignum) {
bignum = arr[i][j];
}
}
// 放入结果数组
resultArr.push(bignum);
}
return resultArr;
}


// 7. Confirm the Ending 检查字符串结尾

function confirmEnding(str, target) {
// 请把你的代码写在这里
// 截取 要比较的文字长度,然后进行比较
var subStr = str.substr(str.length - target.length, target.length);
return subStr === target;
}


// 8. Repeat a string repeat a string 重复输出字符串

function repeat(str, num) {
// 请把你的代码写在这里
if (num < 0) {
return "";
}
var resultStr = "";
for (var i = 0; i < num; i++) {
resultStr += str;
}
return resultStr;
}


// 9. Truncate a string 截断字符串

function truncate(str, num) {
// 请把你的代码写在这里
// 如果长度小于等于3
if (num <= 3) {
return str.slice(0, num) + "...";
}
if (str.length <= num) {
return str.slice(0, num);
} else  {
return str.slice(0, num - 3) + "...";
}
}


// 10. Chunky Monkey 猴子吃香蕉, 分割数组

function chunk(arr, size) {
// 请把你的代码写在这里
var resultArr = [];
for (var i = 0; i < arr.length; i+= size) {
resultArr.push(arr.slice(i, i+size));
}
return resultArr;
}


// 11. Slasher Flick 截断数组

function slasher(arr, howMany) {
// 请把你的代码写在这里
return arr.splice(howMany, arr.length - howMany);
}


// 12. Mutations 比较字符串

function mutation(arr) {
// 请把你的代码写在这里
// 全部转为小写
var firstName = arr[0].toLowerCase();
var lastName = arr[1].toLowerCase();
// 2.把第二个单词分割
var lastArr = lastName.split('');
// 遍历
for (var i = 0; i < lastArr.length; i++) {
if (firstName.indexOf(lastArr[i]) < 0) {
return false;
}
}
return true;
}


// 13. Falsy Bouncer

/*

* 过滤数组假值

(真假美猴王)

删除数组中的所有假值。

在JavaScript中,假值有false、null、0、”“、undefined 和 NaN。

* */

function bouncer(arr) {
// 请把你的代码写在这里
return arr.filter(function (val) {
return Boolean(val) === true;
});
}


// 14. Seek and Destroy 摧毁数组

function destroyer(arr) {
// 请把你的代码写在这里
// 把函数传入的参数转换为数组
var args = Array.prototype.slice.call(arguments, 1);
// 过滤
args.filter(function (val) {
arr = arr.filter(function (tar) {
return val != tar;
});
});
return arr;
}


// 15. Where do I belong 数组排序并找出元素索引

function where(arr, num) {
// 请把你的代码写在这里
arr.push(num);
arr.sort(function (a, b) {
return a > b;
});
return arr.indexOf(num);
}


// 16. Caesars Cipher 凯撒密码

function rot13(str) { // LBH QVQ VG!
// 请把你的代码写在这里
// 分割句子
var arr = str.split(' ');
var resultArr = [];
arr.map(function (val) {
var wordArr = val.split('');
// 每个单词转化为asII码
var numArr = wordArr.map(function (ch) {
return ch.charCodeAt(0);
});
// 加减13, 组装为一个单词
var correctWord = numArr.map(function (wo) {
if (wo > 91 || wo < 65) {
return String.fromCharCode(wo);
}
var index = wo >= 78 ? wo - 13 : wo + 13;
return String.fromCharCode(index);
}).join('');
resultArr.push(correctWord);
});
return resultArr.join(' ');
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  FreeCoeCam 算法