← All problems

1404. Number of Steps to Reduce a Number in Binary Representation to One

MediumOpen on LeetCodeProblem statement

Problem Statement

1404. Number of Steps to Reduce a Number in Binary Representation to One

Medium


Given the binary representation of an integer as a string s, return the number of steps to reduce it to 1 under the following rules:

It is guaranteed that you can always reach one for all test cases.

 

Example 1:

Input: s = "1101"
Output: 6
Explanation: "1101" corressponds to number 13 in their decimal representation.
Step 1) 13 is odd, add 1 and obtain 14. 
Step 2) 14 is even, divide by 2 and obtain 7.
Step 3) 7 is odd, add 1 and obtain 8.
Step 4) 8 is even, divide by 2 and obtain 4.  
Step 5) 4 is even, divide by 2 and obtain 2. 
Step 6) 2 is even, divide by 2 and obtain 1.  

Example 2:

Input: s = "10"
Output: 1
Explanation: "10" corressponds to number 2 in their decimal representation.
Step 1) 2 is even, divide by 2 and obtain 1.  

Example 3:

Input: s = "1"
Output: 0

 

Constraints:

Java

Source file
class Solution {
    public int numSteps(String s) {
        char[] S = s.toCharArray();
        int N = S.length, cy = 0, ct = 0;
        for (int i = N - 1; i > 0; i--) {
            if (cy == 1) {
                if (S[i] == '0') {
                    S[i] = '1';
                    cy = 0;
                } else
                    S[i] = '0';
            }
            if (S[i] == '1') {
                S[i] = '0';
                cy = 1;
                ct += 2;
            } else
                ct++;
        }
        if (cy == 1){
            if(S[0]=='1')
                ct++;
            else ct+=2;
        }
        return ct;
    }
}