Back to all solutions
#1702 - Maximum Binary String After Change
Problem Description
You are given a binary string binary consisting of only 0's or 1's. You can apply each of the following operations any number of times:
- Operation 1: If the number contains the substring "00", you can replace it with "10".
- For example, "00010" -> "10010"
- Operation 2: If the number contains the substring "10", you can replace it with "01".
- For example, "00010" -> "00001"
Return the maximum binary string you can obtain after any number of operations. Binary string x is greater than binary string y if x's decimal representation is greater than y's decimal representation.
Solution
/**
* @param {string} binary
* @return {string}
*/
var maximumBinaryString = function(binary) {
const n = binary.length;
let zeroCount = 0;
let firstZero = -1;
for (let i = 0; i < n; i++) {
if (binary[i] === '0') {
if (firstZero === -1) firstZero = i;
zeroCount++;
}
}
if (zeroCount <= 1) return binary;
const result = new Array(n).fill('1');
result[firstZero + zeroCount - 1] = '0';
return result.join('');
};