Вчера был мой 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; } }