其中一个名为Staircase的Hackerrank问题,想编写一个函数,该函数需要一个整数并将#符号打印为阶梯,并且最后一行不能有任何空格。所以这是我定义的:

function staircase(n) {
  let hash = '#';
  for(let i=1; i <= n; i++){
    console.log(hash.repeat(i));
  }
}

staircase(6);


在Hackerrank中的输出为:(我故意手动添加行号)

1 #
2 ##
3 ###
4 ####
5 #####
6 ######
7


这是不可接受的,因为最后一行(7)正在打印多余的空间。问题是为什么会这样? console.log()是否增加了额外的空间?那有什么解决方案?

可运行的代码段:



function staircase(n) {
  let hash = '#';
  for(let i=1; i <= n; i++){
    console.log(hash.repeat(i));
  }
}

staircase(6);





编辑:此代码在控制台中很好,它仅在Hackerrank测试中发生。

最佳答案

楼梯拼图有点误导,输出不显示前导空格。
实际上,您应该使楼梯右对齐,例如:

     #
    ##
   ###
  ####
 #####
######


(查看任务说明,输出正确缩进)

所以这样的事情应该工作:

function staircase(n) {
  for (let i = 1; i <= n; i++)
    console.log(' '.repeat(n-i) + '#'.repeat(i));
}

09-26 01:33