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. router-link RangeError: Maximum call stack size exceeded

    报错的原因是路由不能写外部链接 写成<a href=""></a>

  2. DAY25、面向对象总复习

    面向对象总复习:面向过程编程思想: 核心是 过程 二字, 过程指的是解决问题的步骤是,即先干什么再干什么. 基于该编程思想编写程序,相当于一条流水线,一种机械式的思维方式. 面向对象编程思想: 核心是 ...

  3. 高斯消元与行列式求值 part1

    两道模板题,思路与算法却是相当经典. 先说最开始做的行列式求值,题目大致为给一个10*10的行列式,求其值 具体思路(一开始看到题我的思路): 1.暴算,把每种可能组合试一遍,求逆序数,做相应加减运算 ...

  4. jmeter压测数据库,抓包工具,python基础

    jmeter压力测试 前提场景的设置:单场景(单个接口进行压力测试一个请求)或混合场景(有业务流程的场景进行压力测试多个请求),压测时间一般在5--1515分组具体看需求. 数据准备:数据量少和数据量 ...

  5. U68364 _GC滑迷宫

    题目背景 _GC买了一双蔡徐坤一代. 题目描述 _GC进入了一个n*m的迷宫.本题的特殊之处在于,_GC只能滑着走.具体来说就是,选定一个方向后,_GC会一直向该方向滑,直到撞到墙.会给出_GC的起始 ...

  6. [AH2017/HNOI2017]大佬

    题目描述 人们总是难免会碰到大佬.他们趾高气昂地谈论凡人不能理解的算法和数据结构,走到任何一个地方,大佬的气场就能让周围的人吓得瑟瑟发抖,不敢言语. 你作为一个 OIER,面对这样的事情非常不开心,于 ...

  7. Asp.net MVC 权限过滤器实现方法的最佳实践

    在项目开发中,为了安全.方便地判断用户是否有访问当前资源(Action)的权限,我们一般通过全局过滤器来实现. Asp.net MVC 页面中常见的权限判断使用过滤器主要在以下几种情况(根据权限判断的 ...

  8. 怎么添加在安装好的nvidia-docker上面根据Dockerfile构建自己所需要的运行环境

    在已经创建好nvidia-docker环境之后,对于新手小白来说,又有一个问题了,就是如何根据Dockerfile来构建试验所需要的docker环境 主要是以下几个步骤 首先创建一个mydocker文 ...

  9. Intellij IDEA 4种配置热部署的方法【转】【补】

    热加载 热加载可以使代码修改后无须重启服务器,就可以加载更改的代码.(其实分java和非java代码,本处可以让java代码立即生效且不重启服务) 第1种:修改服务器配置,使得IDEA窗口失去焦点时, ...

  10. 计算机网络(HTTP)之客户识别:cookie机制

    什么是cookie? 承载用户相关信息的HTTP首部 cookie的工作原理 cookie的缺陷 一.什么是cookie? cookie是由服务器生成,发送给USER-Agent(一般是浏览器),(服 ...