JavaScript初级算法

初级算法

第一关:翻转字符串算法挑战

思路:

先把字符串转化成数组,再借助数组的reverse方法翻转数组顺序,然后把数组转化成字符串。

方法预知:

1.String.prototype.split(’ ') // 单引号 中, 中间有空格。就是它的指定的分割的标志。

方法使用指定的分隔符字符串将一个String对象分割成字符串数组,以将字符串分隔为子字符串,以确定每个拆分的位置。

eg.

var strArr("hello world");  //定义一个字符串
var s=strArr.split('');
console.log(s[0]);//输出的 h

var t=strArr.split(' '); //中间有空格 做标记
console.log(s[0]);//输出的 hello
  1. Array.reverse() 方法将阵列反转到位。第一个数组元素成为最后一个,最后一个数组元素成为第一个。
const a = [1, 2, 3];

console.log(a); // [1, 2, 3]

a.reverse(); 

console.log(a); // [3, 2, 1]

3.**Array.join()**方法通过连接数组(或类数组对象)中的所有元素(由逗号或指定的分隔符字符串分隔)来创建并返回新字符串。如果数组只有一个项目,那么将返回该项目而不使用分隔符。

var elements = ['Fire', 'Air', 'Water'];

console.log(elements.join()); //不放,直接原来输出数组
// expected output: "Fire,Air,Water"

console.log(elements.join('')); // 单引号(没有空格) 相当于的删除了逗号
// expected output: "FireAirWater"

console.log(elements.join('-')); //相当于用“-”替换掉换来的分隔符
// expected output: "Fire-Air-Water"

过程:

把“hello csnd” 翻转字符串 变成“dnsc olleh ”。

function reverseString(str) {
return str.split("").reverse().join("");  
    //先调用split分解为一个一个字母  【注意:这里是没有空格,所有字符串里的空格 也算一个字符串】
    //reverse()方法把位置反转
    //用join()方法 把字母连接。
}
reverseString("hello csnd");
//输出结构为 dnsc olleh

第二关:阶乘算法挑战

问题:

计算所提供整数的阶乘

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

阶乘通常简写成 n!

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

过程:

function factorialize(num) {
  var number = 1;
  for(i=1;i<=num;i++){
    number = number * i;
  }
return number;
}

factorialize(5);
//结果  120

第三关: 回文算法挑战

what is 回文?:

​ 指一个字符串忽略标点符号、大小写和空格,正着读和反着读一模一样。

问题:

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

​ 您需要删除字符串多余的标点符号和空格,然后把字符串转化成小写来验证此字符串是不是回文。

方法预知:

1.string.replace() 方法返回一个由替换值(replacement)替换一些或所有匹配的模式(pattern)后的新字符串。模式可以是一个字符串或者一个正则表达式,替换值可以是一个字符串或者一个每次匹配都要调用的回调函数。


var p = 'dog Dog cat cat  ';

var regex = /dog/gi;//正则表达式
//正则表达式包含有全局替换(g)和忽略大小写(i)的选项,这使得replace方法用'ferret'替换掉了所有出现的"dog".

console.log(p.replace(regex, 'pig'));
// 输出 "pig pig cat cat"

console.log(p.replace('dog', 'monkey')); // 替换新的字符串,条件是 dog 
// 输出  "monkey Dog cat cat"

2.string.toLowerCase() 方法返回转换为小写的调用字符串值。

ver str='Hello World.';
console.log(str.toLowerCase());
// 输出 "hello world."

过程:

function palindrome(str){
    str=str.toLowerCase();
    // 先把字符串转化成小写
    var vr= /[\W_]/g; // 或者 var re = /[^A-Za-z0-9]/g;
    str = str.replace(vr,"");  // 去除多余的标点符号和空格
    var reverseStr = str.split().reverse().join(); // 使用之前的反转字符串方法来反转字符串
    return reverseStr === str;  
}
palindrome("eye");//palindrome回文

第四关:寻找最长的单词算法挑战

问题:

​ 返回提供的句子中最长的单词的长度。

​ 返回值应该是一个数字。

过程:

function findLongestWord(str){
    var strArr = str.split(' ');  //有空格 把句子 变成单词  
    var longest = 0; //存放单词长度,做一个单词的长度对比
    for(i=0;i<strArr.length;i++){  // 遍历 有多少个单词
        if(strArr[i].length>longest){  // 判断 如果的strArr的单词的长度 ,如果大于longest,则把该单词的长度 赋值给longest。
            longest=strArr[i].length;	
        }
    }
    return longest;
}
findLongestWord("The quick brown fox jumped over the lazy dog");

//输出  6

第五关 设置首字母大写算法挑战

问题:

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

方法预知:

String.prototype.substring()

​ **substring(开始部分,结束部分)**方法返回string开始和结束索引之间的部分,或者返回字符串的结尾。

var str = 'Mozilla';

console.log(str.substring(1, 3));  // M为0  1到3(不取3)
// 输出: "oz"
console.log(str.substring(31));//如果indexStart大于indexEnd,则效果substring()就好像两个参数被交换一样;与上述输出一致。
//输出: " oz"


console.log(str.substring(2));// 单给数字时候   就取 2开的结尾 
// 输出: "zilla"

console.log(str.substring(11));//如果indexStart等于indexEnd,则substring()返回一个空字符串
//输出: " "



String.prototype.toUpperCase()

​ 该**toUpperCase()**方法返回转换为大写的调用字符串值(如果不是一个,则该值将转换为字符串)。

var sentence = ' lazy dog.';

console.log(sentence.toUpperCase());
//输出:  "LAZY DOG."

过程:

function titleCase(str) {
  //先统一把字符串转成小写
  str = str.toLowerCase();
  //在用空格分割单词为数组
  var strarr = str.split(" ");// 分解成一个一个单词
  //用循环把每个单词的首字母转成大写
  for(var i=0;i<strarr.length;i++){
    var thisstr = strarr[i];    //声明一个thisstr变量 用来存储单词   thisstr=strarr[0]=I'm
    strarr[i] = thisstr.substring(0,1).toUpperCase() + thisstr.substring(1);  // 给strarr[0]重新赋值
  }
  return strarr.join(" ");  //把单词 连接 成句子,用空格分开。
}

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

//输出:  I'm A Little Tea Pot
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值