W3C后台校验代码bug很多,有的时候跑不过不一定是自己代码写得有问题,也许是网页后台的bug,可以自己把代码放到本地的html文件中跑一下看看

 function reverseString(str) {

      /*
*******学过java的朋友特别注意******
***JS中数组处理方法默认行为与java中的数组处理方法默认行为有差异,跑不出来的话请学习W3C官方教程中JS的对应内容了解详情
*/
// var arr = str.split();
//这是把整个hello字符串作为数组的一个元素转化成数组,即便翻转数组元素只会翻转多个元素之间的位置,不会翻转元素内容
//例如["hello"],使用reverse之后结果仍然是["hello"]
//正确的思路应该是:吧字符串---逐个字母---存进数组,然后翻转数组输出 var arr = str.split(""); //括号内加引号是逐个字符存进数组 var temp = arr.reverse(); //Java中reverse方法可以直接翻转字符串,JS中不行,必须先转化成数组 str = temp.join(''); //括号内加引号是规定数组元素之间以空字符连接,即元素之间直接连接
//若括号内什么都不加,则默认数组元素之间是以逗号连接
return str;
} reverseString("hello");

1-字符串翻转

 function factorialize(num) {
var result = 1; //这里引入了新变量result用于存放结果,对于初学者推荐使用这种方式,逻辑较为清晰
for (var i = num; i >= 1; i--) {
result *= i;
}
return result; //注意return出来的值
} factorialize(5);

2-阶乘

 function palindrome(str) {

     for( var i = 0; i < 50; i++){
//将所有字符串中多余的标点符号和空格删除
str = str.replace( /[^a-zA-Z0-1]/i ,"" );
}
str = str.toLowerCase(); //将清除过后的字符串中的大写字母全部换成小写
var arr = str.split(""); //将得到的小写化的字符串逐个字符转为数组
var reArr = arr.reverse(); //将数组元素位置翻转 arr = str.split(""); //把数组arr的值恢复到翻转前的状态
str = arr.join(""); //把数组arr拼接成字符串,这里注意,将数组arr拼接形成的字符串和str不同 var reStr = reArr.join(""); //将翻转的数组拼接成字符串
return str === reStr; } palindrome("A man, a plan, a canal. Panama");

3-回文算法

 function findLongestWord(str) {
var arr = str.split(" ");
//引号中间不加空格时将逐个字符的转化成数组
//引号中间加上空格,将以空格为划分界限,将相邻空格之间的所有字符作为一个数组元素
//可以自己返回arr测试,进行比较
var len = 0;
for (var i = 0; i <= arr.length - 1 ; i++) {
if (len < arr[i].length) { //数组中单词长度比较
len = arr[i].length; //遇到更长的就把长度赋值给len
}
} return len;
} findLongestWord("The quick brown fox jumped over the lazy dog");

4-寻找最长单词

 function titleCase(str) {
var arr = str.toLowerCase().split(" ");
//把输入的字符串全部转为小写字母,再转化成数组,注意:::::会把字符串外面的引号消去
for(var i =0; i < arr.length ; i++){
//每个单词首字母取出转为大写后与剩余字母拼接
arr[i] = arr[i].substring(0,1).toUpperCase() + arr[i].substring(1);
}
str = arr.join(" "); //把转换完成的数组拼接成字符串 /* str = "\"" + str + "\""; 因为系统bug加上这句编译反而出错,实际上加上这句输出才与题目要求一致 */ return str ; //经过一系列的转换,字符串中的引号被消除了,最后要把引号加回来.
} titleCase("sHoRt AnD sToUt");

5-首字母大写

 function largestOfFour(arr) {
// You can do this!
var newArr = [];
var max = 0;
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr[i].length ; j++) {
//小数组中找最大值赋值给max
if( arr[i][j] > max){
max = arr[i][j];
}
}
newArr.push(max);
max = 0; //每个小数组中的最大值插入新数组后要将max清零,否则会印象后续小数组最大值的寻找
}
return newArr;
} largestOfFour([[13, 27, 18, 26], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);

6-数组中的最大值

 function confirmEnding(str, target) {
// "Never give up and good luck will find you."
// -- Falcor
/*
这种方法只适用于单字符,当目标是字符串时不适用
var n = str.lastIndexOf(target);
if ( n == str.length-1) {
return true;
} else {
return false;
}*/
/* return n;*/ //思路,从字符串末尾处截取与匹配字符串相同长度的字符串,进行匹配
return str.substr(str.length - target.length , target.length) == target; } confirmEnding("Bastia3", "3");

7-确认末尾字符串

 function repeat(str, num) {
// repeat after me
/*
******第一种,能跑过,返回值没有引号*****
if (num <= 0) {
return "";
} else {
return str.repeat(num);
}*/ /*******第二种,能跑过,返回值没有引号
if(num<=0){
return "";
}else{
var string="";
for (var i = 0; i <num; i++) {
string=string+str;
}
}
return string;*/ /***下面为第三种,本人自己写的,网页跑不过,本地html文件中测试能满足题目所有要求,返回值有引号*****/
if (num <= 0) {
return outStr;
} else {
for (var i = 0; i < num; i++) {
outStr += str;
}
return "\"" + outStr + "\"";
} } var outStr = "";
/*repeat("*", 3);
repeat("abc", 3);
repeat("abc", 4);
repeat("abc", 1);
repeat("*", 8);*/
repeat("abc", 5);

8-重复操作算法

 function truncate(str, num) {
// Clear out that junk in your trunk
if (num <= 3) {
return str.slice(0,num) + "...";
//注意:slice方法两个参数中,前一个参数是起始截取位置,后一个参数是截取的长度,不是截取的终止位置
} else if( num < str.length){
return str.slice(0,num-3) + "...";
}
else {
return str;
}
} truncate("A-", 1);

9-字符串截取

 function chunk(arr, size) {
// Break it up.
var newArr = [];
for (var i = 0; i < arr.length ; i += size) {
newArr.push(arr.slice(i,i+size));
}
return newArr;
} chunk(["a", "b", "c", "d"], 3);

10-数组分割

 function slasher(arr, howMany) {
// it doesn't always pay to be first return arr.slice(howMany);//slice只有一个参数n时表示将数组前面的n个元素剔除
} slasher([1, 2, 3,4,5,6,7,5,9], 2);

11-数组截断

 function mutation(arr) {
var str1 = arr[0].toLowerCase();
var str2 = arr[1].toLowerCase();
var newArr = str2.split("");
//使用到很多方法的时候注意每个方法的细节,一点不同可能效果完全不一样,可以逐一检查是哪一步与预想不同
for (var i = 0; i < newArr.length; i++) {
if( str1.indexOf(newArr[i]) < 0){
return false;
}
}
// var index = str1.indexOf(newArr[2]);
return true;
//本题还可以不适用indexOf方法解决,将两个字符串分别逐个字符存进两个数组,将第二个数组的所有元素在数组一中遍历
}
mutation(["hello", "neo"]);

12-数组查询

 function bouncer(arr) {
// Don't show a false ID to this bouncer.
/*filter方法的作用是将不符合括号内条件的元素删除*/
return arr.filter(function(val){
// 内层函数的作用是检测数组中每个元素是否为假值,即将值为false或者不为字符串或空字符串删除
return !(!val || val === "");
});
} bouncer([7, "ate", "", false, 9]);

13-删除数组中特定值

 function destroyer(arr) {
// Remove all the values
var newArr = arguments; //获取所有参数
for (var i = 0; i <= newArr.length ; i++) {
arr = arr.filter(function(val){
// 内层函数执行结果为真则删除其余元素,这里逻辑有点绕,得一层层理清楚
return newArr[i] !== val;
});
}
return arr;
} destroyer([1, 2, 3, 1, 2, 3], 2, 3);

14-去除数组任意多个值

 function where(arr, num) {
// Find my place in this sorted array.
function sortNumber(a,b){ //规定排序按数字大小排序
return a - b
}
arr.push(num); //将num插入数组
arr.sort(sortNumber); //将数组排序
for (var i = 0; i <= arr.length ; i++) {
//查找num并返回索引值
if(arr[i] == num){
return i;
}
}
} where([40, 70,90,150,30,60], 50);

15-数组排序并插入值

 function rot13(str) { // LBH QVQ VG!

     var start = "A".charCodeAt(0);
var end = "Z".charCodeAt(0);
var objstr = ""; var strs = str.split(" ");
for(var i=0 ; i<strs.length ; i++){
for(var j=0 ; j<strs[i].length ; j++){ if (strs[i].charCodeAt(j) >= start && strs[i].charCodeAt(j) <= end) {
if (strs[i].charCodeAt(j)-13 >= start && strs[i].charCodeAt(j)-13 <= end) {
objstr += String.fromCharCode(strs[i].charCodeAt(j)-13);
}else{
objstr += String.fromCharCode(strs[i].charCodeAt(j)+13);
}
} else {
objstr += strs[i][j];
}
}
objstr += " ";
}
return objstr.substr(0 , objstr.length-1);
} // Change the inputs below to test
rot13("SERR PBQR PNZC");

16-位移密码

W3CSchool闯关笔记(初级脚本算法)的更多相关文章

  1. W3CSchool闯关笔记(中级脚本算法)

    坚持下去,编程是一门艺术,与君共勉!!! function sumAll(arr) { var result = 0; var sn = Math.min(arr[0] , arr[1]); var ...

  2. W3CSchool闯关笔记(Bootstrap)

    该闯关内容与JS闯关衔接. 每一题的答案均在注释处, 第一关:把所有的HTML内容放在一个包含有container-fluid的class名称的div下(注意,是所有的HTML内容,style标签属于 ...

  3. W3CSchool闯关笔记(JQuery)

    <script> $(document).ready(function(){ }); </script> <!-- Only change code above this ...

  4. w3c编程挑战-初级脚本算法

    之前偶然看到了w3c上的编程挑战题,就像拿来试试手,先做的是初级脚本算法,总体不难,如果有更好的方法,希望能一起交流! 1.翻转字符串 先把字符串转化成数组,再借助数组的reverse方法翻转数组顺序 ...

  5. XSS Challenges闯关笔记

    前言 做xss做疯了再来一个. 地址:https://xss-quiz.int21h.jp/ ,这个貌似是日本的一个安全研究员yamagata21做的. 做到第九关就跪了,而总共有二十关.一半都还没有 ...

  6. 某xss挑战赛闯关笔记

    0x0 前言 在sec-news发现先知上师傅monika发了一个xss挑战赛的闯关wp([巨人肩膀上的矮子]XSS挑战之旅---游戏通关攻略(更新至18关)https://xianzhi.aliyu ...

  7. W3CSchool实战闯关笔记(JavaScript)

    //handsome /** *ugly **/ 第一关注释 // 举例 var myName; // Define myName below this line 第二关声明变量 // Setup v ...

  8. The Python Challenge 闯关笔记

    The Python Challenge : http://www.pythonchallenge.com/ Level 0: 看提示图片中为2**38,计算值为274877906944. Hint: ...

  9. [读书笔记]算法(Sedgewick著)·第二章.初级排序算法

    本章开始学习排序算法 1.初级排序算法 先从选择排序和插入排序这两个简单的算法开始学习排序算法.选择排序就是依次找到当前数组中最小的元素,将其和第一个元素交换位置,直到整个数组有序. public s ...

随机推荐

  1. SpringBoot:Invalid character found in method name. HTTP method names must be tokens

    问题背景 关于SpringBoot应用挂了很久之后,会发生Invalid character found in method name. HTTP method names must be token ...

  2. Linux系统中硬链接和软链接(符号链接)的区别

    首先是创建链接的命令 ln file link //创建硬链接 ln -s item link //创建软链接 区别 硬链接 硬链接是一开始Unix创造链接的方式,而软连接就更现代一点.创建硬链接的时 ...

  3. 【简】题解 AWSL090429 【市场】

    因为这有个时间的限制 并且  求的时间都是前缀和 那么 我们可以根据时间将排序 因为题中没有修改可以直接用背包预处理出答案 但是因为题目ci mi<=1e9   vi<=300 所以发现不 ...

  4. Axure之动态面板:登录面板切换

    无论是谁,在刚开始接触一门不太熟悉的东西时都有一种恐惧感,但是慢慢多练习几遍,再多琢磨琢磨,形成自己的见解和认识,就掌握的差不多了.我说的是题外话,现在转入正题. 面板切换,也就是我们通常所有的tab ...

  5. Djnago框架组成

    Django.core 核心处理库由以下组成: (1)url分析.请求处理.缓存等. Django.conf Django.conf的主要作用有: (1)处理全局配置,如数据库.加载应用.middle ...

  6. 十行代码分清Java 的 || 和 &&

    发现有些同学到现在还没分不清 || 和 &&的作用 package System; /** * * @ClassName: RandomTest * @Description: 十行代 ...

  7. 编写高质量的Python代码系列(四)之元类及属性

    元类(metaclass)及动态属性(dynamic attribute)都是很强大的Python特性,然后他们也可能导致及其古怪.及其突然的行为.本节讲解这些机制的常见用法,以确保各位程序员写出来的 ...

  8. SQL两个事务update同一张表出现的死锁问题(waitfor delay)

    抄录网址:https://blog.csdn.net/qiumuxia0921/article/details/50574879 下面是我们的建表语句: SET ANSI_NULLS ON GO SE ...

  9. Docker实践之02-使用镜像及定制

    目录 一.获取镜像 二.使用镜像启动容器实例 三.列出镜像 四.删除本地镜像 五.定制镜像 通过commit命令定制镜像 通过Dockerfile定制镜像 docker build的工作原理 dock ...

  10. mysql的The user specified as a definer (”@’%') does not exist 的解决办法

    两种可能: 1.用户权限不够 赋给用户所有权限试试 mysql> grant all privileges on *.* to root@"%" identified by ...