この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿からも解答例が見つかるかもしれませんよ。
BFE.devでのAI解答例 - JavaScript コーディング問題
96. 数字のbinary stringにある"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の数を数える方法があります。以下はその例です。
function countOne(num) { let count = 0; while (num) { count += num & 1; num >>= 1; } return count;}
この関数では、与えられた数値を2進表記で右に1ビットシフトしながら、最下位ビットが1であればカウントします。最後に1が数えられた回数を返します。この方法の時間複雑性はO(log n)になります。