例如;n=2=>[' * ', '***'],n=3=>[' * ', ' *** ', '*****']
function towerBuilder(nFloors) {
return Array.from({length:nFloors}).map((v,i)=>{
let space = ' '.repeat(nFloors-i-1)
return space + '*'.repeat(i+i+1) + space
})
}
0, 1, 1,2, 3, 5,8, 13, 21,34, 55, 89,144, 233,…
给定一个数,例如Prod,可以使两个斐波那契数F(n)*F(n+1)得到,这时返回(n,n+1,true)例如:
productFib(714) # should return [21, 34, true],
# since F(8) = 21, F(9) = 34 and 714 = 21 * 34
productFib(800) # should return [34, 55, false],
# since F(8) = 21, F(9) = 34, F(10) = 55 and 21 * 34 < 800 < 34 * 55
如果找不到这个数的话,当F(n)*F(n- 1) (1)我自己的写法 (2)大神的写法 输入一个秒数,把他换算成一个可读的时间HH:MM:SS。 HH:00-99,MM:00-59,SS:00-59 (1)我的写法 (2)较好的其他答案 写一个匹配密码的正则表达式,至少包含一个小写字母一个大写字母和一个数字,长度至少为6 (1)通常的写法 (2)巧妙的写法 该图显示了6个正方形,其边的长度为1, 1, 2、3, 5, 8。很容易看出,这些方阵的周长之和是:4×(1+1+2+3+5+8)=4×20=80。给定一个n,你能算出这n+1个正方形的周长吗 (1)我的解法 大家的解题思路都差不多,就不贴其他人的答案了 给定一个字符串,如果字符串以数字结尾,那么返回结尾数字+1的字符串,如果字符串没有数字结尾,返回字符串+1,如果字符串为空,返回‘1’ 例如:far =》 far1 far001=》far002 far099=》far100 (1)我的解法 (2)我觉得比较好的答案
一群人排队喝可乐,每个喝到人都会分裂成2个(名字一样)排到队伍的最后面,给定一群人的名字数组集合names,和可乐的数量r,问谁是最后喝到可乐的人 (1)我的答案 (2)优质答案function productFib(prod){
// 四舍五入设定循环中间值
let sqrtProd = Math.round(Math.sqrt(prod)/2)
for(let i=1;i
function productFib(prod){
let [a,b]=[0,1]
while(a*b
3.Human Readable Time
function humanReadable(seconds) {
let HH=padZero(Math.floor(seconds/60/60))
let MM = padZero(Math.floor((seconds-HH*60*60)/60))
let SS = padZero(Math.floor(seconds-HH*60*60-MM*60))
if(SS === '60'){
SS = '00'
MM = HH +1
}
if (MM==='60'){
MM = '00'
HH = HH +1
}
return HH+':' + MM+':'+SS
}
function padZero(str){
return str.toString().length==2?str:'0'+str
}
function humanReadable(seconds){
var pad = function(x){
return x<10?'0'+x?x
}
return pad(parseInt(seconds/60/60)) + ':' + pad(parseInf(seconds/60%60)) + ':' + pad(parseInt(seconds%60))
}
4.Regex Password Validation
function validate(password) {
return /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{6,}$/.test(password);
}
function validate(password) {
return /^[A-Za-z0-9]{6,}$/.test(password) &&
/[A-Z]+/ .test(password) &&
/[a-z]+/ .test(password) &&
/[0-9]+/ .test(password) ;
}
5.Perimeter of squares in a rectangle
function perimeter(n) {
return 4 * fib(n)
}
function fib(x){
var a=1,b=1
let arr = [1,1]
for(let i=1;i
6.String incrementer
function incrementString (string) {
if(string===''){return '1'}
let a = string.match(/[0-9]/g)
if(a==null){
return string + '1'
}
else{
let num = parseInt(string.match(/[0-9]/g).join(''))+1
let nlength = (num + '').length
if(nlength
跟我的思路差不多,不过,他通过match把字符串一分为二,然后把数字项+1,得到数字项和数字项的长度,最后字符串拼接,m(2).slice(0,-next.length)是除去最后结果的数字项,得到的0的位数。
function incrementString (strng) {
var m = strng.match(/^(\w*?)(\d*)$/);
var next = (parseInt('0'+m[2], 10) + 1) + '';
return m[1] + m[2].slice(0, -next.length) + next;
}
7.Double Cola
function whoIsNext(names, r){
let length =names.length
if(r<=length){
return names[r-1]
}
let n=1
while(r>0){
r=r-n*length
if(r>=0 && (r-(2*n)*length) <= 0){
n=2*n
return names[Math.ceil(r/n)-1]
}
n=2*n
}
}
跟我的思路差不多,但是人家更简单一些
function whoIsNext(names, r) {
var l = names.length;
while (r >= l) { r -= l; l *= 2; }
return names[Math.ceil(names.length * r / l)-1];
}