Pig Latin 儿童黑话
需求:
把指定的字符串翻译成 pig latin。
Pig Latin 把一个英文单词的第一个辅音或辅音丛(consonant cluster)移到词尾,然后加上后缀 “ay”。
如果单词以元音开始,你只需要在词尾添加 “way” 就可以了。
见过网上其他人的方法,都是先确定单词内是否具有元音字母,之后还需要你确定是否构成单词。
此处,为了简化代码,不做单词的验证,同时,第一次测试将实验直接验证首字母为元音是否可行。
DNA Pairing DNA配对
DNA 链缺少配对的碱基。依据每一个碱基,为其找到配对的碱基,然后将结果作为第二个数组返回。
Base pairs(碱基对) 是一对 AT 和 CG,为给定的字母匹配缺失的碱基。
在每一个数组中将给定的字母作为第一个碱基返回。
例如,对于输入的 GCG,相应地返回 [[“G”, “C”], [“C”,”G”],[“G”, “C”]]
字母和与之配对的字母在一个数组内,然后所有数组再被组织起来封装进一个数组。
Missing letter 消失的字母
从传递进来的字母序列中找到缺失的字母并返回它。
如果所有字母都在序列中,返回 undefined。
|
|
Boo who
type of
|
|
Sorted Union
写一个 function,传入两个或两个以上的数组,返回一个以给定的原始数组排序的不包含重复值的新数组。
换句话说,所有数组中的所有值都应该以原始顺序被包含在内,但是在最终的数组中不包含重复值。
非重复的数字应该以它们原始的顺序排序,但最终的数组不应该以数字顺序排序。
本题的思路在于,传入的实参数量是不一定的,因此,不能直接对几个形参使用array.concat();,使用arguments();来获取实参数值。然后进行去重。
|
|
Convert HTML Entities
将字符串中的字符 &、<、>、” (双引号), 以及 ‘ (单引号)转换为它们对应的 HTML 实体。
- 这里需要使用到str.match(),该函数可以返回匹配到的字符
- 关于正则中的几个修饰符
- i:不分大小写
- g:匹配所有(否则仅仅匹配一个)
- m:多行匹配,搭配^和$
|
|
Spinal Tap Case
将字符串转换为 spinal case。Spinal case 是 all-lowercase-words-joined-by-dashes 这种形式的,也就是以连字符连接所有小写单词。
Sum All Odd Fibonacci Numbers
给一个正整数num,返回小于或等于num的斐波纳契奇数之和。
斐波纳契数列中的前几个数字是 1、1、2、3、5 和 8,随后的每一个数字都是前两个数字之和。
例如,sumFibs(4)应该返回 5,因为斐波纳契数列中所有小于4的奇数是 1、1、3。
提示:此题不能用递归来实现斐波纳契数列。因为当num较大时,内存会溢出,推荐用数组来实现。
Sum All Primes
求小于等于给定数值的质数之和。
只有 1 和它本身两个约数的数叫质数。例如,2 是质数,因为它只能被 1 和 2 整除。1 不是质数,因为它只能被自身整除。
给定的数不一定是质数。
首先需要了解求质数的算法,比较受推荐有两种。
首先尝试2,然后尝试只要尝试小于√x 的质数(因数的成对出现);
筛法。首先,2是公认最小的质数,所以,先把所有2的倍数去掉;然后剩下的那些大于2的数里面,最小的是3,所以3也是质数;然后把所有3的倍数都去掉,剩下的那些大于3的数里面,最小的是5,所以5也是质数……
刚开始的思路是,创建一个0-n的数组,对数组的value进行筛选,但是这样性能很差,数组内每个数字占内存较大,想到创建一个n的数组,获取索引值并判断,将布尔值存入数组索引位置,最后在获得索引值index,相加即可。
|
|
Smallest Common Multiple最小公倍数
- 在此之前要了解欧拉算法求最大公约数。
简单的说,求两个数的最大公约数,用大数对小数求模,如果能被整除,则小数是这两个数的最大公约数。
如果不能整除,就用小数对余数再次求模,循环此过程直到返回能除尽的那个除数。就是最大公约数。
比如20和15,用20除以15余数为5,然后用15除以余数5,能够整除,所以返回出来的除数5为这两个数的最大公约数。 - 有了最大公约数,就可以求最小公倍数。
最小公倍数的求法是:彼此之间的乘积除以最大公约数。
因为是求几个连续自然数之间的公倍数,所以,求出前两个最小公倍数之后,用这个最小公倍数和下一个值比较。然后就得出了新的最小公倍数。主要用的是递归的思想。
|
|
Finders Keepers
|
|
Drop it
让我们来丢弃数组(arr)的元素,从左边开始,直到回调函数return true就停止。
第二个参数,func,是一个函数。用来测试数组的第一个元素,如果返回fasle,就从数组中抛出该元素(注意:此时数组已被改变),继续测试数组的第一个元素,如果返回fasle,继续抛出,直到返回true。
最后返回数组的剩余部分,如果没有剩余,就返回一个空数组。
我的思路是先先通过filter遍历后获得同伙函数的值,将遍历后数组的第一个元素与传入的arr数组进行indexOf索引匹配,然后用silce()分割即可,这里要注意,如果遍历后所得数组为空,需要做判断。
|
|
Steamroller
对嵌套的数组进行扁平化处理。你必须考虑到不同层级的嵌套。
如果只在外面声明一个全局的新数组,那么无法得出新数组,而在函数内声明,则需要使用闭包。
|
|
Binary Agents
传入二进制字符串,翻译成英语句子并返回。
二进制字符串是以空格分隔的。parseInt转换进制,map遍历数组
|
|
Everything Be True
完善编辑器中的every函数,如果集合(collection)中的所有对象都存在对应的属性(pre),并且属性(pre)对应的值为真。函数返回ture。反之,返回false。
|
|
Arguments Optional
创建一个计算两个参数之和的 function。如果只有一个参数,则返回一个 function,该 function 请求一个参数然后返回求和的结果。
例如,add(2, 3) 应该返回 5,而 add(2) 应该返回一个 function。
调用这个有一个参数的返回的 function,返回求和的结果:
var sumTwoAnd = add(2);
sumTwoAnd(3) 返回 5。
如果两个参数都不是有效的数字,则返回 undefined。
|
|