Вчера был мой 68-й день кодинга. я решил один вопрос

Проблема: Разбить двоичную строку на подстроки с равным количеством нулей и единиц

Дана двоичная строка str длины N. Задача состоит в том, чтобы найти максимальное количество последовательных подстрок, на которые str можно разделить так, чтобы все подстроки были сбалансированы, т. е. имели равное количество 0 и 1. . Если невозможно разбить str, удовлетворяющую условиям, вернуть -1.

Пример 1:

Input:
S = "0100110101"
Output: 4
Explanation: 
The required substrings are 01, 0011, 01 and 01.

Пример 2:

Input:
S = "0111100010"
Output: 3

Ваша задача.
Вам не нужно ничего читать или печатать. Ваша задача — завершить функцию maxSubStr(), которая принимает строку S и возвращает целое число на выходе.

Ожидаемая временная сложность: O(N)
Ожидаемое вспомогательное пространство: O(1)

Решение (в Java):

class Solution {
    public static int maxSubStr(String str) {
      
       int z=0; 
       int o=0;
       int count=0;
       for(int i=0; i<str.length(); i++){
           if(str.charAt(i)=='0')
           z++;
           if(str.charAt(i)=='1')
           o++;
           if(o==z && o!=0)
           count++;
       }
       if(o!=z)
       count=-1; 
       return count;
    }
}