Minimum count of 0s to be removed from given Binary string to make all 1s occurs consecutively

By | September 27, 2023

Given a Binary String S of length N which consists of only 0 and 1, the task is to remove minimum number of 0’s from the string such that all 1’s form a contiguous subsegment. Return numbers of 0’s which are removed, if the string is already having all 1’s in contiguous format return -1.

Examples:

Input : 010001011
Output : 4
Explanation : 
By removing underlined 4 0's from the string 010001011 we can make a string 01111 which has 
all 1's as a contiguous subsegment.

Input : 011110000 
Output : -1

Approach : 

  • Find the index of first occurrence of 1 in given string
  • Find the index of last occurrence of 1 in given string
  • Count number of 0’s present in between these two indices, print count if greater than 0 else print -1.

Implementation in C++:

// C++ program to implement
// the above approach
#include <bits/stdc++.h>
using namespace std;

//Function to count number of 0's to be 
//removed from given string to make all 
//1's contiguous
void makeContiguous (string S, int N)
{
    //to store the first and last occurance
    //of 1 in given string
    int first_occurance,last_occurance;
    
    //for loop to find first occurance
    for(int x=0; x<N; x++)
    {
        if(S[x]=='1')
        {
            first_occurance=x;
            break;
        }
    }
    
    //for loop to last first occurance
    for(int x=N-1; x>=0; x--)
    {
        if(S[x]=='1')
        {
            last_occurance=x;
            break;
        }
    }
    
    //to count number of 0's 
    int count=0;
    
    for(int x=first_occurance; x<=last_occurance; x++)
    {
        if(S[x]=='0')
        count++;
    }
    
    if(count!=0)
    cout<< count;
    else
    cout<<-1;
   
}

// Driver Code
int main()
{
    // Given string, S
    string S = "010001011";
 
    // Store the size of S
    int N = S.size();
 
    // Function Call
    makeContiguous(S, N);
 
    return 0;
}

Output :

4

Time Complexity :O(N)
Space Complexity : O(1)

Author: Mithlesh Upadhyay

I hold an M.Tech degree in Artificial Intelligence (2023) from Delhi Technological University (DTU) and possess over 4 years of experience. I worked at GeeksforGeeks, leading teams and managing content, including GATE CS, Test Series, Placements, C, and C++. I've also contributed technical content to companies like MarsDev, Tutorialspoint, StudyTonight, TutorialCup, and Guru99. My skill set includes coding, Data Structures and Algorithms (DSA), and Object-Oriented Programming (OOPs). I'm proficient in C++, Python, JavaScript, HTML, CSS, Bootstrap, React.js, Node.js, MongoDB, Django, and Data Science.