# 将二进制字符串拆分为0和1相等数量的子字符串

2021年4月22日15:03:11 发表评论 526 次浏览

## C ++

``````//C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;

//Function to return the count
//of maximum substrings str
//can be divided into
int maxSubStr(string str, int n)
{

//To store the count of 0s and 1s
int count0 = 0, count1 = 0;

//To store the count of maximum
//substrings str can be divided into
int cnt = 0;
for ( int i = 0; i <n; i++) {
if (str[i] == '0' ) {
count0++;
}
else {
count1++;
}
if (count0 == count1) {
cnt++;
}
}

//It is not possible to
//split the string
if (count0 != count1) {
return -1;
}

return cnt;
}

//Driver code
int main()
{
string str = "0100110101" ;
int n = str.length();

cout <<maxSubStr(str, n);

return 0;
}``````

## Java

``````//Java implementation of the above approach
class GFG
{

//Function to return the count
//of maximum substrings str
//can be divided into
static int maxSubStr(String str, int n)
{

//To store the count of 0s and 1s
int count0 = 0 , count1 = 0 ;

//To store the count of maximum
//substrings str can be divided into
int cnt = 0 ;
for ( int i = 0 ; i <n; i++)
{
if (str.charAt(i) == '0' )
{
count0++;
}
else
{
count1++;
}
if (count0 == count1)
{
cnt++;
}
}

//It is not possible to
//split the string
if (count0 != count1)
{
return - 1 ;
}
return cnt;
}

//Driver code
public static void main(String []args)
{
String str = "0100110101" ;
int n = str.length();

System.out.println(maxSubStr(str, n));
}
}

//This code is contributed by PrinciRaj1992``````

## Python3

``````# Python3 implementation of the approach

# Function to return the count
# of maximum substrings str
# can be divided into
def maxSubStr( str , n):

# To store the count of 0s and 1s
count0 = 0
count1 = 0

# To store the count of maximum
# substrings str can be divided into
cnt = 0

for i in range (n):
if str [i] = = '0' :
count0 + = 1
else :
count1 + = 1

if count0 = = count1:
cnt + = 1

# It is not possible to
# split the string
if count0 ! = count1:
return - 1

return cnt

# Driver code
str = "0100110101"
n = len ( str )
print (maxSubStr( str , n))``````

## C#

``````//C# implementation of the above approach
using System;

class GFG
{

//Function to return the count
//of maximum substrings str
//can be divided into
static int maxSubStr(String str, int n)
{

//To store the count of 0s and 1s
int count0 = 0, count1 = 0;

//To store the count of maximum
//substrings str can be divided into
int cnt = 0;
for ( int i = 0; i <n; i++)
{
if (str[i] == '0' )
{
count0++;
}
else
{
count1++;
}
if (count0 == count1)
{
cnt++;
}
}

//It is not possible to
//split the string
if (count0 != count1)
{
return -1;
}
return cnt;
}

//Driver code
public static void Main(String []args)
{
String str = "0100110101" ;
int n = str.Length;

Console.WriteLine(maxSubStr(str, n));
}
}

//This code is contributed by PrinciRaj1992``````

``4``