この解答例はChatGPTによって生成されています,正しいかは自己判断で。

BFE.devでのAI解答例 - JavaScript コーディング問題
96. 数字のbinary stringにある"1"を数える

  1. JavaScriptの文字列関連のbuilt-inメソッドは以下の通りです。
  • str.length: 文字列の長さを返します。時間複雑性は O(1) です。
  • str.indexOf(searchValue[, fromIndex]): 指定された文字列が最初に現れるインデックスを返します。最悪の場合、時間複雑性は O(n) になります(nは文字列の長さ)。
  • str.lastIndexOf(searchValue[, fromIndex]): 指定された文字列が最後に現れるインデックスを返します。最悪の場合、時間複雑性は O(n) になります(nは文字列の長さ)。
  • str.slice(beginIndex[, endIndex]): 指定された範囲の部分文字列を返します。最悪の場合、時間複雑性は O(n) になります(nは文字列の長さ)。
  1. もっと良い方法として、ビットシフト演算子を使用してビット単位で1の数を数える方法があります。以下はその例です。
function countOne(num) {
  let count = 0;
  while (num) {
    count += num & 1;
    num >>= 1;
  }
  return count;
}

この関数では、与えられた数値を2進表記で右に1ビットシフトしながら、最下位ビットが1であればカウントします。最後に1が数えられた回数を返します。この方法の時間複雑性はO(log n)になります。