Given a binary string S of length N, the task is to minimize the count of repetitive removal of alternating subsequence of the 0 and 1 from the given binary string S to make the string empty.
Examples:
Input: S = “0100100111”
Output: 3
Explanation:
Remove subsequence “010101” from S to modify it to “0011”.
Remove “01” from “0011” to make it “01”.
Finally, remove “01” to make it an empty string.Input: S = “1111”
Output: 4
Approach: The given problem can be solved by observing that an alternating subsequence of 0 and 1 is to be removed and to remove all the consecutive characters 1s or 0s can only be removed at each separate operation, not in a single operation.
Therefore, the minimum number of operations required is the maximum count of consecutive 0s and 1s.
Below is the implementation of the above approach:
#include <iostream> using namespace std;
void minOpsToEmptyString(string S, int N)
{ // Initialize variables
int one = 0, zero = 0;
int x0 = 0, x1 = 0;
// Traverse the string
for ( int i = 0; i < N; i++) {
// If current character is 0
if (S[i] == '0' ) {
x0++;
x1 = 0;
}
else {
x1++;
x0 = 0;
}
// Update maximum consecutive
// 0s and 1s
zero = max(x0, zero);
one = max(x1, one);
}
// Print the minimum operation
cout << max(one, zero) << endl;
} // Driver code+ int main()
{ // input string
string S = "0100100111" ;
// length of string
int N = S.length();
// Function Call
minOpsToEmptyString(S, N);
} // This code is contributed by aditya7409 |
// Java program for the above approach import java.io.*;
import java.util.*;
class GFG {
// Function to find the minimum
// number of operations required
// to empty the string
public static void
minOpsToEmptyString(String S,
int N)
{
// Initialize variables
int one = 0 , zero = 0 ;
int x0 = 0 , x1 = 0 ;
// Traverse the string
for ( int i = 0 ; i < N; i++) {
// If current character is 0
if (S.charAt(i) == '0' ) {
x0++;
x1 = 0 ;
}
else {
x1++;
x0 = 0 ;
}
// Update maximum consecutive
// 0s and 1s
zero = Math.max(x0, zero);
one = Math.max(x1, one);
}
// Print the minimum operation
System.out.println(
Math.max(one, zero));
}
// Driver Code
public static void main(String[] args)
{
String S = "0100100111" ;
int N = S.length();
// Function Call
minOpsToEmptyString(S, N);
}
} |
# Python3 program for the above approach def minOpsToEmptyString(S, N):
# Initialize variables
one = 0
zero = 0
x0 = 0
x1 = 0
# Traverse the string
for i in range (N):
# If current character is 0
if (S[i] = = '0' ):
x0 + = 1
x1 = 0
else :
x1 + = 1
x0 = 0
# Update maximum consecutive
# 0s and 1s
zero = max (x0, zero)
one = max (x1, one)
# Print the minimum operation
print ( max (one, zero))
# Driver code+ if __name__ = = "__main__" :
# input string
S = "0100100111"
# length of string
N = len (S)
# Function Call
minOpsToEmptyString(S, N)
# This code is contributed by chitranayal
|
// C# program for the above approach using System;
class GFG
{ // Function to find the minimum
// number of operations required
// to empty the string
public static void
minOpsToEmptyString( string S, int N)
{
// Initialize variables
int one = 0, zero = 0;
int x0 = 0, x1 = 0;
// Traverse the string
for ( int i = 0; i < N; i++)
{
// If current character is 0
if (S[i] == '0' )
{
x0++;
x1 = 0;
}
else
{
x1++;
x0 = 0;
}
// Update maximum consecutive
// 0s and 1s
zero = Math.Max(x0, zero);
one = Math.Max(x1, one);
}
// Print the minimum operation
Console.WriteLine(Math.Max(one, zero));
}
// Driver Code
static public void Main()
{
string S = "0100100111" ;
int N = S.Length;
// Function Call
minOpsToEmptyString(S, N);
}
} // This code is contributed by Dharanendra L V |
<script> // Javascript program of the above approach // Function to find the minimum // number of operations required // to empty the string function minOpsToEmptyString(S, N)
{ // Initialize variables
let one = 0, zero = 0;
let x0 = 0, x1 = 0;
// Traverse the string
for (let i = 0; i < N; i++)
{
// If current character is 0
if (S[i] == '0' )
{
x0++;
x1 = 0;
}
else
{
x1++;
x0 = 0;
}
// Update maximum consecutive
// 0s and 1s
zero = Math.max(x0, zero);
one = Math.max(x1, one);
}
// Print the minimum operation
document.write(Math.max(one, zero));
} // Driver Code let S = "0100100111" ;
let N = S.length; // Function Call minOpsToEmptyString(S, N); // This code is contributed by chinmoy1997pal </script> |
3
Time Complexity: O(N)
Auxiliary Space: O(N)