# Separate ‘1’ and ‘0’ in a binary string in C++

In this tutorial, we are going to discuss on a binary string problem, Separate ‘1’ and ‘0’ in a binary string in C++.

## Separate ‘1’ and ‘0’ in a binary string in C++

These type of problem are being useful for an interview or in a coding round of top-IT companies and also being useful for competitive programming contests. These type of problems are being asked in various competitive programming contests in different ways. So, in this post, i am going to discuss the basic of that problem and solve it in the best way in O(n) time complexity.

What is a binary string?

Binary string is a string which consists of all elements value 0 and 1 only.

Ex:-               111000111001

### Problem Statement

We are provided with a binary string of ‘0’ and ‘1’ only. We need to separate all 1’s on one side and 0 on another in binary string. We need to perform operation for this, In each operation we can only swap adjacent 1 and 0’s.

We need to find out the minimum number of operations to segregate all 1 and 0’s.

Example:-

String :-       1010101

OUTPUT:-     1111000

Approach:-

• We have two options either we can shift all 0’s on right side and all 1’s on left side or vice-versa.
• So, we need to check number of operations for both and print the minimum of two operations.
• Whenever we got 1 we count it and check how many 0 are on its left side that number of swaps we needed to put 1 on left side and all zero on the right side.
• Similarly, we perform the same operation when we got 0 in binary string.
• Minimum of the above two operations will be our answer.

### C++ code implementation of segregation of 1’s and 0’s in a binary string

```#include <bits/stdc++.h>

#define mod 1000000007

using namespace std;

int main()
{
ios_base::sync_with_stdio(false);

cin.tie(NULL);

string s;

cin>>s;

long long one=0,zero=0;

long long ans1=0,ans2=0;

for(int i=0;i<s.length();i++)
{
if(s[i]=='1')
{
one++;
ans1+=zero;
}
else
{
zero++;
ans2+=one;
}
}

cout<<min(ans1,ans2)<<endl;
}```

INPUT

`001010`

OUTPUT

`3`

This was the solution of the problem: Separate ‘1’ and ‘0’ in a binary string in C++

I hope you got the basic of these kinds of problems. These problems can be asked in different ways also by changing characters 0 and 1 in a string.