LeetCode in Kotlin

2696. Minimum String Length After Removing Substrings

Easy

You are given a string s consisting only of uppercase English letters.

You can apply some operations to this string where, in one operation, you can remove any occurrence of one of the substrings "AB" or "CD" from s.

Return the minimum possible length of the resulting string that you can obtain.

Note that the string concatenates after removing the substring and could produce new "AB" or "CD" substrings.

Example 1:

Input: s = “ABFCACDB”

Output: 2

Explanation: We can do the following operations:

So the resulting length of the string is 2.

It can be shown that it is the minimum length that we can obtain.

Example 2:

Input: s = “ACBBD”

Output: 5

Explanation: We cannot do any operations on the string so the length remains the same.

Constraints:

Solution

class Solution {
    fun minLength(s: String): Int {
        val stack = ArrayDeque<Char>()
        s.forEach { c ->
            if (stack.isNotEmpty() &&
                (
                    (c == 'B' && stack.last() == 'A') ||
                        (c == 'D' && stack.last() == 'C')
                    )
            ) {
                stack.removeLast()
            } else {
                stack.addLast(c)
            }
        }
        return stack.size
    }
}