FreeCodeCamp-JavaScript初级算法题-1

1、 将摄氏度转换为华氏度
将摄氏度转换为华氏度的计算方式为:摄氏度乘以 9/5 然后加上 32
输入:convertToF(0) 应返回一个数字
输入:-30
输出:-22
其中celsius代表摄氏度,fahrenheit代表华氏度
解法:

function convertToF(celsius) { let fahrenheit; fahrenheit = (celsius*9/5)+32 return fahrenheit; }

思路:这题很简单,直接按照公式套就可以了。
2、 反转字符串
反转传入函数的字符串,函数的返回结果也应为字符串
解法:
function reverseString(str) { let temp = str.split(''); temp = temp.reverse().join(''); return temp; } reverseString("hello");

【FreeCodeCamp-JavaScript初级算法题-1】思路:看到此题首先想到js里的反转数组的方法,reverse(),
① 把字符串转为数组,用split方法;
② 使用数组的reverse方法将数组元素反转
③ 使用join方法把数组转为字符串(题目要求要返回字符串
知识点:split,join,reverse。
3、 计算整数的阶乘
返回一个给定整数的阶乘计算结果,对于整数n,n的阶乘就是所有小于等于n的正整数的乘积。
阶乘通常用符号 n! 来表示。
例如:5! = 1 2 3 4 5 = 120
解法一: function factorialize(num) { let product = 1; for (let i = 2; i <= num; i++) { product *= i; } return product; }

思路:了解阶乘是怎么回事以后就好办了,就是从1乘到num,那么就初始一个遍历为1,循环从2开始到num结束,依次相乘即可。
解法二:
function factorialize(num) { if (num === 0) { return 1; } return num * factorialize(num - 1); }

思路:运用递归的思想,依次调用函数,直到num=1,
解法三:
function factorialize(num) { return num < 0 ? 1 : new Array(num) .fill(undefined) .reduce((product, _, index) => product * (index + 1), 1); }

思路:
本解法用到了三目运算符和两个方法(fill和reduce),其中fill是填充数组的意思,reduce语法:
arr.reduce(function(prev,cur,index,arr){
...
}, init);
其中,
arr 表示原数组;
prev 表示上一次调用回调时的返回值,或者初始值 init;
cur 表示当前正在处理的数组元素;
index 表示当前正在处理的数组元素的索引,若提供 init 值,则索引为0,否则索引为1;
init 表示初始值。
4、 找出字符串中的最长单词
返回给出的句子中,最长单词的长度。
函数的返回值应是一个数字。
输入:findLongestWordLength("The quick brown fox jumped over the lazy dog")
输出 :6
输入:findLongestWordLength("What if we try a super-long word such as otorhinolaryngology")
输出:19
解法一:
function findLongestWordLength(str) { let arr = str.split(' '); let len = []; for(let i =0; i

思路:
①把字符串拆分为数组,以空格为分隔符;
②新建一个数组
④ 遍历数组,把每个单词的长度存放到新数组里
⑤ 最后再比较数组里的数字最大的是多少
知识点:
① 数组和字符串互相转换的方法:split,join
② 计算一组参数的最大值,Math.max(参数),数组的话要写成Math.max(…数组名 )的形式
解法二:
function findLongestWordLength(str) { let maxLen = 0; let arr = []; let right = 0,left = 0; for(let i =0; i

思路:滑动窗口思想
① 创建left,right两个索引,maxLen负责记录长度,新数组arr
②遍历字符串,如果遇到空格,就判定为一个单词,用right记录此单词大小,并把长度放数组里。
③这个算法要考虑一种情况,因为最后一个单词末尾是没有空格的,所以第二个if来了,若遍历到最后一个字符时,且left-1的所引出为空格,则表示为一个单词,计算大小,放进数组
③ 比较新数组里的数字大小,最大的则是最长单词的长度
知识点:
① 滑动窗口思想
②计算一组参数的最大值,Math.max(参数),数组的话要写成Math.max(…数组名 )的形式
先暂且记录到这里。

    推荐阅读