Given a binary string, the task is to count the minimum steps to remove substring “010” from this binary string.
Examples:
Input: binary_string = “0101010”
Output: 2
Switching 0 to 1 at index 2 and index 4 will remove the substring 010.
Hence the number of steps needed is 2.
Input: binary_string = “010”
Output: 1
Switching any one 0 to 1 or 1 to 0 will remove the substring 010.
Hence the number of steps needed is 1.
Approach:
- Iterate the string from beginning to end-2 of the binary string.
- If in binary string continuously three characters are ‘0’, ‘1’, ‘0’ then any one character can be change so that one step will be count.
- Increase the loop counter by 2.
Below is the implementation of the above approach:
C++
// CPP program to calculate steps// to remove substring 010// from a binary string#include <bits/stdc++.h>using namespace std;// Function to find the minimum stepsint minSteps(string str){ int count = 0; for (int i = 0; i < str.length() - 2; i++) { if (str[i] == '0') { if (str[i + 1] == '1') { if (str[i + 2] == '0') { // substring "010" found count++; i += 2; } } } } return count;}// Driver codeint main(){ // Get the binary string string str = "0101010"; // Find the minimum steps cout << minSteps(str); return 0;} |
Java
// Java program to calculate steps// to remove substring 010// from a binary stringimport java.util.*;class GFG{// Function to find the minimum stepsstatic int minSteps(String str){ int count = 0; for (int i = 0; i < str.length() - 2; i++) { if (((int)str.charAt(i)) == '0') { if (str.charAt(i + 1) == '1') { if (str.charAt(i + 2) == '0') { // substring "010" found count++; i += 2; } } } } return count;}// Driver codepublic static void main(String args[]){ // Get the binary string String str = "0101010"; // Find the minimum steps System.out.println(minSteps(str));}} |
Python3
# Python3 program to calculate steps# to remove substring 010# from a binary string# Function to find the minimum stepsdef minSteps(str): count = 0 i = 0 while i < len(str) - 2: if str[i] == '0': if(str[i + 1] == '1'): if(str[i + 2] == '0'): # substring "010" found count = count + 1 i = i + 2 i = i + 1 return count# Driver code# Get the binary stringstr = "0101010"# Find the minimum stepsprint(minSteps(str)) # This code is contributed # by Shashank_Sharma |
C#
// C# program to calculate steps// to remove substring 010// from a binary stringusing System;class GFG{// Function to find the minimum stepsstatic int minSteps(string str){ int count = 0; for (int i = 0; i < str.Length - 2; i++) { if (((int)str[i]) == '0') { if (str[i + 1] == '1') { if (str[i + 2] == '0') { // substring "010" found count++; i += 2; } } } } return count;}// Driver codepublic static void Main(){ // Get the binary string string str = "0101010"; // Find the minimum steps Console.Write(minSteps(str));}}// This code is contributed by ChitraNayal |
PHP
<?php// PHP program to calculate steps to remove // substring 010 from a binary string// Function to find the minimum stepsfunction minSteps($str){ $count = 0; for ($i = 0; $i < strlen($str) - 2; $i++) { if ($str[$i] == '0') { if ($str[$i + 1] == '1') { if ($str[$i + 2] == '0') { // substring "010" found $count++; $i += 2; } } } } return $count;}// Driver code// Get the binary string$str = "0101010";// Find the minimum stepsecho(minSteps($str));// This code is contributed // by Shivi_Aggarwal?> |
Javascript
<script>// js program to calculate steps// to remove substring 010// from a binary string// Function to find the minimum stepsfunction minSteps(str){ let count = 0; for (let i = 0; i < str.length - 2; i++) { if ((str[i]) == '0') { if (str[i + 1] == '1') { if (str[i + 2] == '0') { // substring "010" found count++; i += 2; } } } } return count;}// Driver code// Get the binary stringlet str = "0101010";// Find the minimum stepsdocument.write(minSteps(str));// This code is contributed by mohit kumar 29.</script> |
2
Time complexity: O(n) where n is the length of binary string
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

