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(' '); }
相关文章推荐
- freeCodeCamp学习记录——初级算法[01]翻转字符串
- FreeCodeCamp 前端初级算法(个人向)
- FreeCodeCamp基础算法题答案解析
- FreeCodeCamp 中级算法(个人向)
- FreeCodeCamp日志-基础算法编程完成
- FreeCodeCamp日志-基础算法编程完成
- FreeCodeCamp 高级算法(个人向)
- freecodecamp 算法部分刷题笔记
- freeCodeCamp学习:js之实现21点算法
- freeCodeCamp中一些算法练习的实现
- Intermediate Algorithm Scripting FreeCodeCamp中级算法
- FreeCodeCamp学习--Mutations
- FreeCodeCamp 学习笔记(一)HTML&CSS
- freeCodeCamp题目:No repeats please(排列组合题)
- FreeCodeCamp学习--Caesars Cipher
- FreeCodeCamp备查簿(6:#161-#190--JavaScript基础)
- FreeCodeCamp:Slasher Flick
- js的一些入门题目(freecodecamp)
- FreeCodeCamp 学习笔记(二)响应式框架bootstrap
- FreeCodeCamp学习--Caesars Cipher