Find the Longest Balanced Substring of a Binary String

# 2609. Find the Longest Balanced Substring of a Binary String

You are given a binary string s consisting only of zeroes and ones.

A substring of s is considered balanced if all zeroes are before ones and the number of zeroes is equal to the number of ones inside the substring. Notice that the empty substring is considered a balanced substring.

Return the length of the longest balanced substring of s.

A substring is a contiguous sequence of characters within a string.


### Example 1:
```
Input: s = "01000111"
Output: 6
Explanation: The longest balanced substring is "000111", which has length 6.
```
### Example 2:
```
Input: s = "00111"
Output: 4
Explanation: The longest balanced substring is "0011", which has length 4. 
 ```
Constraints:
```
1 <= s.length <= 50
'0' <= s[i] <= '1'
```
/**
 * @param {string} s
 * @return {number}
 */
var findTheLongestBalancedSubstring = function(str) {
    let out = 0, counter = 0, stack = [];
    for (let i = 0; i < str.length; i++) {
        if (str[i] === '0') {
            stack.push(str[i])
            continue;
        }

        if (stack.length && str[i] === '1') {
            counter += 2;
            stack.pop();
            out = Math.max(counter, out);
        }

        if (str[i + 1] === '0') {
            counter = 0;
            stack = [];
        }
    }
    return out;
};