freecodecamp刷题笔记(二)初级算法题2-5题

Factorialize a Number:

计算一个整数的阶乘

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

阶乘通常简写成 n!

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

当你完成不了挑战的时候,记得开大招’Read-Search-Ask’。

这是一些对你有帮助的资源:

Arithmetic Operators

function factorialize(num) {
  // 请把你的代码写在这里
  
  return (num)? num*factorialize(num-1):1;
}

求阶乘最简单的方法自然是递归啦,这里就不细说了hhhhh。

Find the Longest Word in a String:

找出最长单词

在句子中找出最长的单词,并返回它的长度。

函数的返回值应该是一个数字。

当你完成不了挑战的时候,记得开大招’Read-Search-Ask’。

这是一些对你有帮助的资源:

String.split()
String.length

function findLongestWord(str) {
  // 请把你的代码写在这里
  arr1=str.split(" ");
  var length=0;
  for(var i=0;i<arr1.length;i++){
    if(arr1[i].length>length)length=arr1[i].length;
  }
  return length;
}

和c语言中求数组里最大数几乎没什么区别~毫无难度(一副立flag的样子2333)

Check for Palindromes:

检查回文字符串

如果给定的字符串是回文,返回true,反之,返回false。

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

注意你需要去掉字符串多余的标点符号和空格,然后把字符串转化成小写来验证此字符串是否为回文。

函数参数的值可以为"racecar",“RaceCar"和"race CAR”。

当你完成不了挑战的时候,记得开大招’Read-Search-Ask’。

这是一些对你有帮助的资源:

String.replace()
String.toLowerCase()

function palindrome(str) {
  // 请把你的代码写在这里
  str2=str.replace(/[^a-zA-Z0-9]/g,"").replace(/\s/g,"").toLowerCase();
  str1=str2.split("").reverse().join("");
  if(str2==str1)return true;
  else return false;
}

需要提到的一点是建议初学者多使用这种连续的方法操作,不仅看起来简单明了,更能大大减少初学者的代码冗余情况。

此处需要了解的主要是正则表达式的相关内容,a-z表示小写字母a-z,A-Z表示大写字母A-Z,0-9即为数字0-9,^表示取反,即除去这些之外的东西,此处用replace()即是将除了数字和字母之外的其他字符全部换为“”。

Title Case a Sentence:

句中单词首字母大写

确保字符串的每个单词首字母都大写,其余部分小写。

像’the’和’of’这样的连接符同理。

当你完成不了挑战的时候,记得开大招’Read-Search-Ask’。

这是一些对你有帮助的资源:

String.split()

function titleCase(str) {
  // 请把你的代码写在这里
  arr=str.split(" ");//将字符串根据空格进行分割;
  var arr1=[];
  var arr2=[];
  for(var i=0;i<arr.length;i++){
    
    arr1[i]=arr[i].split("");//将分割后的每个单词字符串分割为字母数组;
    
    arr1[i][0]=arr1[i][0].toUpperCase(); //将字母数组第一个元素(即字母数组)大写
    
    for(var j=1;j<arr1[i].length;j++){
      
      arr1[i][j]=arr[i][j].toLowerCase(); 将第二个字母及其后字母小写;
    }
    arr2[i]=arr1[i].join("");将字母数组拼接为单词数组
  }
  str2=arr2.join(" ");//将单词数组拼接为字符串
  return str2;
}

titleCase("I'm a little tea pot");

其中,toLowerCase()与toUpperCase()分别是将字母转化为小写和将字母转化为大写;
这是一种比较蠢的方法,主要适用于像我这种初学者并且不知道其他js的很方便的库函数的人(哭了qaq),如果额外知道一些很方便的函数,该题可以进行如下较为简单的操作(摘抄自大佬):

function titleCase(str) {
  var arr = str.toLowerCase().split(/\s/g);//将所有字母小写并且根据空白字符划分为数组;
  var newStr;
  for(var i = 0;i < arr.length;i ++){
    arr[i] = arr[i][0].toUpperCase() + arr[i].substring(1, arr[i].length);
    //将首字母大写从第二个字母开始将原字符串拼接上去
  }
  newStr = arr.join(' ');
  return newStr;
}

titleCase("I'm a little tea pot");
--------------------- 
作者:Lalala这是我的小马甲哦 
来源:CSDN 
原文:https://blog.csdn.net/realDE/article/details/54846112 
版权声明:本文为博主原创文章,转载请附上博文链接!

其中主要是用了JavaScript的substring() 方法:
substring() 方法用于提取字符串中介于两个指定下标之间的字符,语法为:stringObject.substring(start,stop);
其返回值为一个新的字符串,该字符串值包含 stringObject 的一个子字符串,其内容是从 start 处到 stop-1 处的所有字符,其长度为 stop 减 start。

然而。。。。。
看过该方法之后,又突然发现自己好像做麻烦了点儿(真的哭了QAQ),显然第一种方法也可以通过将所有字母化为小写的方法来简化操作,至于怎么操作肯定比我上面写的简单很多,有兴趣的读者可以自己尝试一下,嘤嘤嘤。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值