坚持下去,编程是一门艺术,与君共勉!!!

 function sumAll(arr) {
var result = 0;
var sn = Math.min(arr[0] , arr[1]);
var en = Math.max(arr[0] , arr[1]);
/************使用reduce只能在数组元素之间求和,对于数组中没有的数操作不了
* 如果享用这种方法解决问题需要把两个数字之间包括这两个数字全部存进一个新数组里对新数组求和
* var newArr = [];
for (var i = 0; i <= en - sn; i++) {
newArr[i] = i + sn;
}
result = newArr.reduce(function(prev ,cur){
return prev + cur;
},0);
*/
for (var i = sn; i <= en; i++) { //黑猫白猫,能抓老鼠就是好猫
result += i;
}
return result;
} sumAll([1, 5]);

1-区间求值

 function diff(arr1, arr2) {
var newArr = []; pick(arr1,arr2); //两个数组都要遍历,算法写起来容易,但是时间复杂度很大
pick(arr2,arr1);
function pick(a1,a2){ //编写函数将两个数组中不同的元素放入新数组
for (var i in a1) {
if (a2.indexOf(a1[i]) < 0) {
newArr.push(a1[i]);
}
}
}
return newArr;
} diff([1, 2, 3, 5], [1, 2, 3, 4, 5]);

2-找出数组差异

 function convert(num) {
var one = ["I","II","III","IV","V","VI","VII","VIII","IX"];
var ten = ["X","XX","XXX","XL","L","LX","LXX","LXXX","XC"];
var hundred = ["C","CC","CCC","CD","D","DC","DCC","DCCC","CM"];
var thousand = "M";
var result = "";
var th = Math.floor(num / 1000);
var h = Math.floor((num % 1000) / 100);
var t = Math.floor((num % 100) / 10);
var o = Math.floor(num % 10);
for (var i = 0; i < th; i++) {
result += thousand;
}
if(h){
result += hundred[h - 1];
}
if(t){
result += ten[t - 1];
}
if(o){
result += one[o - 1];
} return result;
} convert(36);

3-数字转罗马数字

 function where(collection, source) {

 /*******网友给出的更优解*********
var arr = [] ;
var status = null;
for (var i = 0; i < collection.length; i++) {
for(var imp in source){
if (source[imp] !== collection[i][imp]) {
status = 0;
break;
}
status = 1;
}
if(status == 1){
arr.push(collection[i]);
}
}
**********/ // console.log(Object.getOwnPropertyNames(source).length);
//获取对象属性个数
var arr = [], index = 0;
for (; index < collection.length; index++) {
for (var key in collection[index]) {
var count = 0;
for (var key2 in source) {
if (collection[index].hasOwnProperty(key2)) {
if (source[key2] == collection[index][key2]) {
count++;
}
if (count == Object.getOwnPropertyNames(source).length && key == key2) {
arr.push(collection[index]);
}
}
}
}
}
return arr;
} where([{ first: "Romeo", last: "Montague" }, { first: "Mercutio", last: null }, { first: "Tybalt", last: "Capulet" }], { last: "Capulet" });

4-对象搜索

 function myReplace(str, before, after) {
/*
*本方法只适用于字符串首字母大写的情况
*如果涉及到目标字符串中其他字符大写则需要对temp数组进行遍历逐一比对
*在if外层嵌套for循环并设置temp数组中的索引变量即可解决
*/
var arr = str.split(" "); //把字符串按单词转化成数组
var index = arr.indexOf(before); //找到目标单词在数组中的索引
var temp1 = arr[index].split(""); //数组中的目标单词按字母分割成新数组
if(/[A-Z]/.test(temp1[0])){ //新数组中首字母大写判定
after = after.charAt(0).toUpperCase() + after.slice(1); //把用来替换的字符串首字符改成大写
}
arr[index] = arr[index].replace(arr[index] , after); //字符串替换
str = arr.join(" "); //数组中的单词以空格为间隔拼接成字符串
return str;
} myReplace("Let us go to the store", "store", "mall");

5-字符串查询替换

 function translate(str) {
var vowel = ["a", "e", "i", "o", "u"];
if (vowel.indexOf(str[0]) != -1) {
return str + "way";
}
while (vowel.indexOf(str[0]) == -1) {
str = str.substr(1) + str.substr(0, 1);
}
return str + "ay";
} translate("consonant");

6-字符串移动插入

 function pair(str) {
var arr = new Array(); //注意:这里的数组定义方式是实例化定义
str = str.split("");
for (var i in str) {
arr[i] = new Array();
arr[i].push(str[i]);
if (str[i] == "G" || str[i] == "C") {
(arr[i] == "G") ? arr[i].push("C") : arr[i].push("G");
} else {
(arr[i] == "A") ? arr[i].push("T") : arr[i].push("A");
}
}
return arr;
} pair("GCG");

7-字符配对

8

 function fearNotLetter(str) {
/*******下面这种网友给出的方法只符合缺失一个字符的情况
* 如果缺失多个则只能输出缺失的第一个
var sub;
for (var index = 0; index < str.length - 1; index++){
sub = str.charCodeAt(index + 1) - str.charCodeAt(index);
if (sub == 1) {
if (index == str.length) {
return undefined;
}
} else {
return String.fromCharCode(str.charCodeAt(index) + 1);
}
}
*/ //下面本人字节写的可以返回缺失一段多个字符的情况,但是不符合缺失多端字符的情况如abeg
//缺失多段字符的方法可以将内层for循环写成功能函数,在外层循环中每当发现sub!=1时去调用即可
//调用结束过后使用continue让外层循环继续执行直到整个str都遍历完为止
var sub = 0;
var index = [];
for (var i = 0; i < str.length - 1; i++) {
sub = str.charCodeAt(i + 1) - str.charCodeAt(i);
if (sub == 1) {
if(i == str.length){
return undefined;
}
} else {
for(var j = 0 ; j < sub - 1; j++){
index[j] = String.fromCharCode(str.charCodeAt(i)+1+j);
return index[j];
}
}
}
} fearNotLetter("abeg");

-字符串查询补充

9

 function boo(bool) {
// What is the new fad diet for ghost developers? The Boolean.
//这种情况只能做检查提示,开发过程中除了检查提示还应该让用户重新输入直到正确为止
//可以使用try catch结构处理输入异常,或使用while函数让用户输入直到输入正确为止
if (bool === true || bool === false) {
return true;
} else {
return false;
}
} boo(null);

-输入检查

10

 function unite(arr1, arr2, arr3) {

     var args = Array.from(arguments);
var arr = args.reduce(function(prev,cur){
return prev.concat(cur);
});
return arr.filter(function(item,index,arr){
return arr.indexOf(item) === index;
});
} unite([1, 3, 2], [5, 2, 1, 4], [2, 1]);

-数组去重

 function convert(str) {
// &colon;&rpar;
var arr = str.split("");
for (var i = 0; i < str.length; i++) {
switch (arr[i]) {
case '&':
arr[i] = "&amp;";
break;
case '<':
arr[i] = "&lt;";
break;
case '>':
arr[i] = "&gt;";
break;
case '"':
arr[i] = "&quot;";
break;
case "'":
arr[i] = "&apos;";
break;
}
}
return arr.join("");
} convert("Dolce & Gabbana");

11-html符号转实体

 function spinalCase(str) {

   var array=str.split(" ");
if(array.length<=1){
array=str.split("_");
}
if(array.length<=1){
return str.replace(/([A-Z])/g,"-$1").toLowerCase();
}
str=array[0].toLowerCase();
for(var i=1;i<array.length;i++){
str=str.concat('-').concat(array[i].toLowerCase());
}
return str;
} spinalCase('This Is Spinal Tap');

12-字符串连接

 function sumFibs(num) {
var fibo = [1, 1];
var nums = 2;
var temp = 0;
while(true){
temp = fibo[0] + fibo[1];
if(temp > num){
return nums;
}
if(temp % 2 !== 0){
nums += temp;
}
fibo[0] = fibo[1];
fibo[1] = temp;
}
} sumFibs(1000);

13-斐波那契

 function sumPrimes(num) {
var sum = 0;
for(var i = 2; i <= num; i++){
var j = 2;
for( ; i%j !== 0; j++){}
if(i == j){
sum += i;
}
}
return sum;
} sumPrimes(10);

14-质数求和

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

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

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

  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. XSS Challenges闯关笔记

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

  5. 某xss挑战赛闯关笔记

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

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

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

  7. The Python Challenge 闯关笔记

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

  8. 2018年全国多校算法寒假训练营练习比赛(第一场)闯关的lulu

    闯关的lulu 链接:https://www.nowcoder.com/acm/contest/67/J 来源:牛客网 题目描述 勇者lulu某天进入了一个高度10,000,000层的闯关塔,在塔里每 ...

  9. 2018年全国多校算法寒假训练营练习比赛(第一场)J - 闯关的lulu

    链接:https://www.nowcoder.com/acm/contest/67/J来源:牛客网 题目描述 勇者lulu某天进入了一个高度10,000,000层的闯关塔,在塔里每到一层楼,他都会获 ...

随机推荐

  1. git常用命令一、git cherry-pick

    在自己的分支查看想要合并的节点的commit id : Git log —oneline -3   //查看最新的三个提交 commit id 切换到总分支: Git fetch Git pull G ...

  2. css的寬高約束

    https://blog.csdn.net/qq_26780317/article/details/80736514

  3. tornado之用户验证装饰器

    authenticated装饰器 为了使用Tornado的认证功能,我们需要对登录用户标记具体的处理函数.我们可以使用@tornado.web.authenticated装饰器完成它.当我们使用这个装 ...

  4. js中如何向json数组添加元素

    //1. var jsonstr="[{'name':'a','value':1},{'name':'b','value':2}]"; var jsonarray = eval(' ...

  5. centos7升级内核至最新

    应用背景: 最近在接触docker,其对内核版本要求较高,就连目前使用的centos7.x默认内核版本为3.10.0-xxx,也是刚好满足其最低要求,故借此机会记录一下升级内核的操作步骤. 测试环境: ...

  6. Python学习day17 迭代器&生成器

    迭代器&生成器 1. 迭代器 1.1 迭代器 迭代:迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果.每一次对过程的重复称为一次"迭代" 迭代器:帮助对某种对象 ...

  7. SAM求多个串的最长公共子串

    又学到一个\(SAM\)的新套路QvQ 思路 考虑用其中的一个串建个\(SAM\),然后用其他的串在上面匹配,匹配时更新答案 首先有一个全局变量\(len\),表示当前已匹配的长度.假设目前在点\(u ...

  8. 《STL源码剖析》----2.23 value_type()和__type_traits<>如何实现

    在2.13小节destory()第二版本接受两个迭代器找出元素类型,代码如下 其中value_type()判断出类型,__type_traits判断是否存在trivial destructor 在3. ...

  9. Mac 设计师必备的设计绘图软件 推荐与下载

    Mac设计师必备的设计绘图软件,为广大设计师推荐一些Mac上实用且强大的软件,使用好的软件,事半功倍,设计出精美的作品. Mac上优秀的设计类软件非常多,绝对不止这几款软件,看看以下内容,希望对你有帮 ...

  10. maven仓库有jar包还是报错怎么办?

    出现这种情况通常是jar不能自动下载 一.下载jar包外的其他文件,并放到仓库对应路径下: 点击View All,下载其他文件并放到仓库 二.这样仓库这个对应jar包的文件就齐全了.如果还是报错,请检 ...