codewars题目解答

  • 1.Calculating with Functions
  • 2.Sum of Pairs
  • 3.Maximum subarray sum
  • 4.Rot13
  • 5.Calculating with Functions

1.Calculating with Functions


我的解决方案(粗糙的一批)

   function common(n, val) {var a, b;for (var key in n) {a = key;b = n[key]}switch (a) {case '*':return val * b;break;case '-':return val - b;break;case '+':return val + b;break;case '/':return Math.floor(val / b);break;default:return val}}function zero(n) {return common(n, 0)}function one(n) {return common(n, 1)}function two(n) {return common(n, 2)}function three(n) {return common(n, 3)}function four(n) {return common(n, 4)}function five(n) {return common(n, 5)}function six(n) {return common(n, 6)}function seven(n) {return common(n, 7)}function eight(n) {return common(n, 8)}function nine(n) {return common(n, 9)}function times(n) {return {'*': n}}function plus(n) {return {'+': n}}function minus(n) {return {'-': n}}function dividedBy(n) {return {'/': n}}

别人的写法

function zero(func) {return func ? func(0) : 0;};function one(func) {return func ? func(1) : 1;};function two(func) {return func ? func(2) : 2;};function three(func) {return func ? func(3) : 3;};function four(func) {return func ? func(4) : 4;};function five(func) {return func ? func(5) : 5;};function six(func) {return func ? func(6) : 6;};function seven(func) {return func ? func(7) : 7;};function eight(func) {return func ? func(8) : 8;};function nine(func) {return func ? func(9) : 9;};function plus(b) {return function(a) {return a + b;};};function minus(b) {return function(a) {return a - b;};};function times(b) {return function(a) {return a * b;};};function dividedBy(b) {return function(a) {return a / b;};};console.log(eight(plus(nine()))) //35

2.Sum of Pairs

Sum of Pairs

我的解答:这一题好难啊,现在的解法虽然可以解决问题,但是执行超时了,懵逼,明天再看

        var sum_pairs = function(ints, s) {var arri = []var arrb = []for (var i = 0, l = ints.length, r = []; i < l; i++) {for (var j = i + 1; j < l; j++) {if (ints[i] + ints[j] == s) {if (r[0] == null) {r[0] = i;r[1] = j;arri.push(i);arrb.push(j);} else if (j - i === r[1] - r[0]) {arri.push(i);arrb.push(j);} else if (j - i < r[1] - r[0]) {r[0] = i;r[1] = j;}}}}if (arri.length > 1) {var anser1 = ints[arri[0]]var anser2 = ints[arrb[0]]return [anser1, anser2]} else if (r[1]) {return [ints[r[0]], ints[r[1]]]} else {return undefined}}

3.Maximum subarray sum

Maximum subarray sum
求连续子序列的最大和
简单的情况是当列表只由正数组成,而最大和是整个数组的和。如果列表仅由负数组成,则返回0。
空列表被视为最大和为零。请注意,空列表或数组也是有效的子列表/子数组。

思路:双重循环获得数组的全部子序列,然后求最大值
我的答案

    var maxSequence = function (arr) {// ...if (arr.length > 0) {var arr1 = []var sumArr = []for (var j = 0; j < arr.length; j++) {for (var i = j; i < arr.length; i++) {arr1.push(arr.slice(j, i + 1))}}arr1.map((valArr) => {sumArr.push(sum(valArr))})return Math.max.apply(Math, sumArr.map(item => { return item }))>0?Math.max.apply(Math, sumArr.map(item => { return item })):0}else{return 0}}function sum(arr) {return arr.reduce(function (prev, curr, idx, arr) {return prev + curr;});}

codewars上答案

    var maxSequence = function (arr) {var min = 0, ans = 0, i, sum = 0;for (i = 0; i < arr.length; ++i) {sum += arr[i];                     //-2  -3   min = Math.min(sum, min);          // 0  -3   ans = Math.max(ans, sum - min);    // 0   0   console.log(sum,min,ans);      }return ans;}

4.Rot13

Rot13
套用ROT13到一段文字上仅仅只需要检查字元字母顺序并取代它在13位之后的对应字母,有需要超过时则重新绕回26英文字母开头即可。A换成N、B换成O、依此类推到M换成Z,然后序列反转:N换成A、O换成B、最后Z换成M。只有这些出现在英文字母里头的字元受影响;数字、符号、空白字元以及所有其他字元都不变。因为只有在英文字母表里头只有26个,并且26=2×13

我的解答

    var arr = ['A','B','C' ,'D' ,'E' ,'F' ,'G','H', 'I', 'J', 'K', 'L', 'M', 'N','O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']function rot13(message){//your code herelet result = ''message.split('').map((val)=>{if(arr.indexOf(val.toLocaleUpperCase())!=-1){var index = arr.indexOf(val.toLocaleUpperCase())+13if(index>25){if(judgeUpper(val)){result+=arr[index-26].toLocaleUpperCase()}else{console.log(val);result+=arr[index-26].toLocaleLowerCase()}}else{if(judgeUpper(val)){result+=arr[index].toLocaleUpperCase()}else{console.log(index);result+=arr[index].toLocaleLowerCase()}}}else{result+=val}})return result}function judgeUpper(val){if(/[A-Z]/.test(val)){return true}}console.log(rot13('test'));

利用charCodeAt()fromCharCode()

      var codeA = "A".charCodeAt(0),codeZ = "Z".charCodeAt(0),codea = "a".charCodeAt(0),codez = "z".charCodeAt(0);function rot13(message) {return message.split("").map(function (char) {var code = char.charCodeAt(0);if (codeA <= code && code <= codeZ) {return String.fromCharCode(((code - codeA + 13) % 26) + codeA);} else if (codea <= code && code <= codez) {console.log(code,codeA);return String.fromCharCode(((code - codea + 13) % 26) + codea);}return char;}).join("");}console.log(rot13('ROT13'))

5.Calculating with Functions

Scramblies
第二个字母的全部字符是否可以在第一个字母中找到

我的超时的答案

         function scramble(str1, str2) {//code melet num = 0str2.split('').map((val) => {const a = str1.split('').indexOf(val)if (a > -1) {str1 = str1.replace(val, '')console.log(a, str1)num++}})if (num == str2.length) {return true} else {return false}}

第二位同样超时的答案

         function scramble(str1, str2) {const str1Arr = str1.split('')return Array.prototype.every.call(str2, (l) => {var i = str1Arr.indexOf(l)if (i !== -1) {str1Arr.splice(i, 1)}return i !== -1})}

贴上来主要是看js哪些操作会改变原数组

  • 修改原数组(记住这一个就可以了)
var arr = []
arr.splice() //***注意****//
arr.reverse()
arr.fill()
arr.copyWithin()
arr.sort()
arr.push()
arr.pop()
arr.unshift()
arr.shift()
  • 不会修改原数组
var arr = []
arr.slice()
arr.map()
arr.forEach()
arr.every()
arr.some()
arr.filter()
arr.reduce()
arr.entries()
arr.find()
arr.concat('1',['2','3']) //[1,2,3]

forEach有争议
orEach 在对 item 进行修改的时候,如果 item 是原始类型的值,item 对应的 的内存地址实际并没有变化
如果 item 是 引用类型的值,item 对应多的内存地址也没有变化,但是对应的值,已经重写了

codewars题目相关推荐

  1. codewars题目记录

    1.问题描述:传入一个二维数组[[上车人数,下车人数],-],计算上车下车人数变动后车上剩下的总人数 //我的代码 var number = function(busStops){// Good Lu ...

  2. linux 脚本 语法错误,从windows拷贝到linux的脚本报错:未找到命令 or 语法错误

    关于discuz“终于解决“头像保存过程中发生网络错误,请重试&quot;"的解决方法 1 php.ini里面allow_url_fopen = On2 将php.ini中的;upl ...

  3. matlab单行注释,matlab注释

    SSH整合(Struts2+hibernate+spring) 1.创建表 create table t_user( id int primary key auto_increment, userna ...

  4. java 对数取反_GitHub - giraffegzy/ex_java: java练习题(来源各个地方and难度随机)

    java基础练习题 1.检查是否为素数(素数:该数除了1和它本身以外不再有其他的因数的数被称为素数.) 2.打印出1-100的数,每十个数为一组. 3.接收一个层数值n,打印一个有n层的直角三角形,并 ...

  5. 那些优雅灵性的JS代码片段

    我的个人网站:拓跋的前端客栈~了解一哈.这里是原文地址,如果您发现我文章中存在错误,请尽情向我吐槽,大家一起学习一起进步φ(>ω<*) 引子 如果您甘于平凡,写代码对您来说可以就是Ctrl ...

  6. Codewars Vasya - Clerk--6 kyu--Python解法

    Codewars Vasya - Clerk–6 kyu–Python解法 Codewars 是一个跟LeetCode类似的结题网站. Codewars题解专栏:Codewars题解 题目地址:Tra ...

  7. Codewars 开篇

    今年二月份,因为寒假在家休息了一段时间,打算干点正事打发无聊的时光.于是想刷点题找找编程的感觉,之前也刷过一些OJ题.Leetcode上的题,所以本来是计划刷一些leetcode的题,就当是为以后找工 ...

  8. 入坑codewars

    毕业一年多了,总感觉自己啥也不会.零零散散看了各种书,总感觉差点什么,代码毕竟还是敲出来的.OJ虽然也好,但是我这种画面党毕竟比较难接受,而且自查能力比较一般,各种不通过调试起来比较麻烦.也用过一阵子 ...

  9. Codewars(3)

    前一阵子在codewars上做了一道题,觉得很不错,期间也踩了很多很多坑,在此把我做题的整个过程和牵扯到的知识点做一个汇总,以及我在思考过程中犯的一些错误,希望看完之后能对你有帮助,不要犯我犯的错误, ...

  10. codewars(二)

    今天是体验codewars的第二天,今天开始研究了一下大佬们的代码,emm,for循环是恶魔吧,我要换换换~!! 今天的题目: //您将获得一个包含整数的数组(其长度至少为3,但可能非常大).除了单个 ...

最新文章

  1. 复兴or幻象?VR的2021三重门
  2. petalinux2020.1 uboot 无法正常加载的问题
  3. TensorFlow 完整的TensorFlow入门教程
  4. Python字典推导式将cookie字符串转化为字典
  5. IB component change - CL_IBCOMPONENT_IL~CHANGE_COMPONENT
  6. JavaScript中的 apply 与 call 方法
  7. linux从入门到精通张帆,Linux基础之文件系统简介及其系统管理工具
  8. java 循环字符_在Java中从循环结果创建字符串
  9. 关于发那科机器人弧焊指令故障处理
  10. JDK成年了,JDK18版本发布,走进JDK18新特性
  11. 室外巡检项目搭建仿真环境
  12. 监督学习、非监督学习、半监督学习(主动学习)
  13. 依旧乐观的李彦宏,十年寻光的百度AI
  14. The Rust Programming Language - 第7章 使用包、crate和模块管理不断增长的项目 - 7.1 包和crate
  15. HashMap 扩容 加载因子
  16. 简七32堂极简理财课——模块三:日常理财,让你时时刻刻都有钱
  17. 【经典算法】-算术表达式求值
  18. php获取某一年的工作日列表
  19. 查看服务器进程,判断是谁在使用用服务器或者路径
  20. 致敬 互联网背后的运维工程师们

热门文章

  1. 硕士期间两篇计算机sci二区,实验室两篇论文被SCI 2区期刊Neurocomputing接收
  2. 应该用BPM管理业务规则吗?
  3. 数据湖统一存储在 OPPO 的实践
  4. 转载:CVPR 2019 论文汇总(按方向划分,0611 更新中)
  5. 蓝桥杯——PCF8591
  6. 亲密关系科学(05)男女大脑激素差异
  7. 思科服务器启动无显示信号,思科2960交换机启动故障维修案例
  8. MapWinGis学习(一) 新建图层 在指定点上打上图标
  9. 移动端300ms延迟_移动端300ms延迟的解决方法
  10. 发散阅读、拓宽思路【PageRank、Tf-Idf、协同过滤、分布式训练、StyleTransfer、Node2vec】