博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
One question per day
阅读量:5734 次
发布时间:2019-06-18

本文共 3104 字,大约阅读时间需要 10 分钟。

算法学习之路!!!

1.观察下面的规律,写一个函数accum

. 2018/8/13

accum("abcd");    // "A-Bb-Ccc-Dddd"accum("RqaEzty"); // "R-Qq-Aaa-Eeee-Zzzzz-Tttttt-Yyyyyyy"accum("cwAt");    // "C-Ww-Aaa-Tttt"复制代码

参考答案:

function accum(s) {    return s.split('').map((c, i) => (c.toUpperCase() + c.toLowerCase().repeat(i))).join('-')}复制代码

2.写一个函数求数组的最大值和最小值

. 2018/8/14

highAndLow("1 2 3 4 5"); // return "5 1"highAndLow("1 2 -3 4 5"); // return "5 -3"highAndLow("1 9 3 4 -5"); // return "9 -5"复制代码

参考答案:

function highAndLow(numbers){     numbers = numbers.split('')    return `${
Math.max(...numbers)} ${
Math.min(...numbers)}`}复制代码

3.写一个函数判断字符串中x的数量和o的数量是否相等(忽略大小写):

. 2018/8/15

XO("ooxx") => trueXO("xooxx") => falseXO("ooxXm") => trueXO("zpzpzpp") => true // 没有x也没有o,所有相等,都为0XO("zzoo") => false复制代码

参考答案:

function XO1(str) {  str = str.toLowerCase().split('')  return str.filter(x => x === 'x').length === str.filter(x => x === 'o').length}function XO2(str) {    return (str.match(/x/ig) || []).length === (str.match(/o/ig) || []).length;}复制代码

4.写一个函数判断一个数字是不是某个整数的平方。

. 2018/8/16

is_square (-1) # => falseis_square   0 # => trueis_square   3 # => falseis_square   4 # => trueis_square  25 # => trueis_square  26 # => false复制代码

参考答案

// 答案1function isSquare(n) {  return Math.sqrt(n) % 1 === 0}// 答案2function isSquare(n) {  return Number.isInteger(Math.sqrt(n)}// 答案3function isSquare(n){  const s = Math.sqrt(n)  return s === (s | 0)  // return s === ( ~~s )}复制代码

5.写一个函数,将字符串除了最后的四位,其他都变成

maskify("4556364607935616") == "############5616"maskify(     "64607935616") ==      "#######5616"maskify(               "1") ==                "1"maskify(                "") ==                 ""// "What was the name of your first pet?"maskify("Skippy")                                   == "##ippy"maskify("Nananananananananananananananana Batman!") == "####################################man!"复制代码

参考答案:

function maskify(cc) {  return cc.slice(0, -4).replace(/./g, '#') + cc.slice(-4)}复制代码

6.下面三角形的数列:rowSumOddNumbers()

1              3     5           7     9    11       13    15    17    19    21    23    25    27    29    ...    rowSumOddNumbers(1) // 1    rowSumOddNumbers(2) // 3+5=8    rowSumOddNumbers(3) // 7+9+11=27    rowSumOddNumbers(42) // 74088复制代码

参考答案:

function rowSumOddNumbers(n) {  return Math.pow(n,3)}幂运算:Math.pow(base,num)base ** num复制代码

7.将数字的每一位求平方,然后组合成新的数字(注意:请返回一个数字)

squareDigits(9119) // 811181 参考答案:

function squareDigits(num){  return +num.toString().split('').map(i => i*i).join('')}复制代码

8.写一个函数solution,求比一个数字n小的所有3和5的整数倍数和。

. 2018年8月20日

  • 比如10,比它小的3、5整数倍数有: 3,5,6,9, 所以和为23。 比如16, 比它小的3,5整数倍数有: 3,5,6,9,10,12,15,所以和为60(15只计算1次)

示例

solution(10) // 23solution(16) // 60复制代码

参考答案:

function solution(number){  if(number < 0) return 0  return [...Array(number).keys()]    .filter(n => n % 3 === 0 || n % 5 === 0)    .reduce((a, b) => a + b,0)}// 另一种方法,参考周末学的等差数列求和function solution(n) {  const n3  = Math.floor((n-1)/3)  const n5  = Math.floor((n-1)/5)  const n15 = Math.floor((n-1)/15)  return (n3+1)*(n3*3)/2 + (n5+1)*(n5*5)/2 - (n15+1)*(n15*15)/2}复制代码

转载于:https://juejin.im/post/5b72bf37f265da27e43d1530

你可能感兴趣的文章
网站建表实践及优化
查看>>
字符串的简单操作
查看>>
C#新功能--命名参数与可选参数
查看>>
构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(22)-权限管理系统-模块导航制作...
查看>>
strtok和strtok_r
查看>>
维辰超市:借助云商城成功转型新零售
查看>>
web.xml中<load-on-start>n</load-on-satrt>作用
查看>>
python之路---进程
查看>>
1061. Dating (20)
查看>>
leetcode 【 Best Time to Buy and Sell Stock II 】python 实现
查看>>
【算法】CRF
查看>>
windows 8 微软拼音输入法
查看>>
Windows UI风格的设计(7)
查看>>
3. 指针的赋值
查看>>
linux小常识
查看>>
SQL中使用WITH AS提高性能 使用公用表表达式(CTE)简化嵌套SQL
查看>>
聊聊TaskExecutor的spring托管
查看>>
oracle 强行杀掉一个用户连接
查看>>
Git提交本地库代码到远程服务器的操作
查看>>
挨踢部落故事汇(13):扬长避短入行Oracle开发
查看>>