# 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:-**

- Read the binary string.
- 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.

You can ask your doubts in the comment section below. Keep reading and stay tuned.

Thank You !!

Also learn:

## Leave a Reply