FreeCodeCamp初级算法

来源:互联网 发布:手机淘宝淘宝客 编辑:程序博客网 时间:2024/06/16 06:46

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(' ');}
原创粉丝点击