
Sponsored
Sponsored
This approach involves simulating the reduction steps performed directly on the binary number string. We traverse the binary string backwards, simulating each step based on whether the current number is odd or even. Additionally, whenever we encounter a carry after incrementing an odd number, we propagate the carry to handle the necessary binary addition.
Time Complexity: O(n), where n is the length of the string s.
Space Complexity: O(1), only a constant amount of extra space is used.
1function numSteps(s) {
2 let steps = 0, carry = 0;
3 for (let i = s.length - 1; i > 0; i--) {
4 if ((parseInt(s[i]) + carry) % 2 === 0) {
5 steps += 1;
6 } else {
7 steps += 2;
8 carry = 1;
9 }
10 }
11 return steps + carry;
12}
13
14// Example usage:
15console.log(numSteps("1101")); // Output: 6JavaScript adopts a similar strategy, using parseInt to ensure the correct numerical treatment of each bit. This solution, like the others, executes the binary operation logic ensuring to account for the correct sequence of divides and adds.
Convert the binary representation to a decimal integer, then simulate the operations using intuitive arithmetic operations. This approach avoids character-level string manipulations.
Time Complexity: O(n) for initial conversion, O(log m) for operations (where m is the integer value).
Space Complexity: O(1), after input conversion.
The C function uses strtoul for converting a string representing a binary number into a numeric value. An arithmetic sequence thereafter reduces the number until it reaches unity based on even-odd checks.