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?