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 steps int 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 code int 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 string import java.util.*; class GFG{ // Function to find the minimum steps static 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 code public 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 steps def 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 string str = "0101010" # Find the minimum steps print (minSteps( str )) # This code is contributed # by Shashank_Sharma |
C#
// C# program to calculate steps // to remove substring 010 // from a binary string using System; class GFG { // Function to find the minimum steps static 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 code public 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 steps function 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 steps echo (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 steps function 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 string let str = "0101010" ; // Find the minimum steps document.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!