CodeKata 15



質問する


正数Nをバイナリに変更する場合は、連続する0の最大値を返します.
  • の後の0は、1と1の間を表す.
  • 1と1の間の0をバイナリgapと呼ぶ.
  • input: 9
    output: 2
    説明:9のバイナリ数は1001です.
    1と1の間の0は2なので、2を返します.
    input: 529
    output: 4
    説明:529の整数は10000010001です.
    binary gapは4と3の2つあります.
    大きい値は4ですので、4を返します.
    input: 20
    output: 1
    説明:20の整数は10100です.
    1~1の間の連続0の数は1のみです.
    (後ろの0は1の間ではありません.)
    input: 15
    output: 0
    説明:15のバイナリ数は1111です.
    バイナリギャップがないため、0を返します.
    input: 32
    output: 0
    説明:32の整数は100000です.
    バイナリギャップがないため、0を返します.

    答案用紙


    モデルの答え

    const solution = N => {
      let binary = (N).toString(2);
      const binaryArr = binary.split('1');
      let binaryGap = 0;
    
      for (let i = 0; i < binaryArr.length-1; i++) {
        if (binaryArr[i].length === 0) {
          continue;
        } else {
          binaryGap = Math.max(binaryGap, binaryArr[i].length);
        }
      }
      
      return binaryGap;
    }

    私の答え