LeetCode in Kotlin

1963. Minimum Number of Swaps to Make the String Balanced

Medium

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:

You may swap the brackets at any two indices any number of times.

Return the minimum number of swaps to make s balanced.

Example 1:

Input: s = “][][”

Output: 1

Explanation: You can make the string balanced by swapping index 0 with index 3. The resulting string is “[[]]”.

Example 2:

Input: s = “]]][[[”

Output: 2

Explanation: You can do the following to make the string balanced:

Example 3:

Input: s = “[]”

Output: 0

Explanation: The string is already balanced.

Constraints:

Solution

class Solution {
    fun minSwaps(s: String): Int {
        var openCount = 0
        var swap = 0
        for (c in s.toCharArray()) {
            if (c == '[') {
                openCount++
            } else {
                if (openCount == 0) {
                    swap++
                    openCount++
                } else {
                    openCount--
                }
            }
        }
        return swap
    }
}