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

simulation

T: O(n^2) , need string move index

S: O(n)

class Solution {
    public int numSteps(String s) {
        if (s.length() == 1) {
            return 0;
        }
        int count = 0;
        StringBuilder sb = new StringBuilder(s);
        while (sb.length() > 1) {
            if (sb.charAt(sb.length()-1) == '1') { 
                StringBuilder newSb = new StringBuilder();
                newSb.append('0'); 
                boolean carry = true;
                for (int i = sb.length()-2; i >= 0; i--) {
                    if (carry) {
                        if (sb.charAt(i) == '1') {
                            newSb.append('0'); 
                            carry = true;
                        } else {
                            newSb.append('1'); 
                            carry = false;
                        }
                    } else {
                        newSb.append(sb.charAt(i)); 
                        carry = false;
                    }
                }
                if (carry) {
                    newSb.append('1'); // 001
                }
                sb = newSb.reverse(); // 100
            } else {
                sb.deleteCharAt(sb.length()-1);
            }
            count++;
        }
        return count;
    }
}

/**

11 
 1
100

1
 */

T: O(n)

S: O(1)

Last updated

Was this helpful?