Minimum Number of Swaps to Make the String Balanced

MediumTwo PointersStringStackGreedy

Solution

export function minSwaps(s: string): number {
  let bracketCount = 0;
  for (const char of s) {
    if (char === '[') {
      bracketCount += 1;
    } else {
      bracketCount = Math.max(0, bracketCount - 1);
    }
  }
  return Math.ceil(bracketCount / 2);
}

Complexity

  • Time: O(N)
  • Space: O(1)