Back to all solutions
#1963 - Minimum Number of Swaps to Make the String Balanced
Problem Description
You are given a 0-indexed string s of even length n. The string consists of exactly n / 2 opening brackets '[' and n / 2 closing brackets ']'.
A string is called balanced if and only if:
- It is the empty string, or
- It can be written as AB, where both A and B are balanced strings, or
- It can be written as [C], where C is a balanced string.
You may swap the brackets at any two indices any number of times.
Return the minimum number of swaps to make s balanced.
Solution
/**
* @param {string} s
* @return {number}
*/
var minSwaps = function(s) {
let imbalance = 0;
let maxImbalance = 0;
for (const bracket of s) {
if (bracket === '[') {
imbalance--;
} else {
imbalance++;
maxImbalance = Math.max(maxImbalance, imbalance);
}
}
return Math.ceil(maxImbalance / 2);
};