Minimize a binary string by repeatedly removing even length substrings of same characters | C # program for the above approach ; Recursive function to print stack elements from bottom to top without changing their order ; If stack is empty ; Pop top element of the stack ; Recursively call the function PrintStack ; Print the stack element from the bottom ; Push the same element onto the stack to preserve the order ; Function to minimize binary String by removing subStrings consisting of same character ; Declare a stack of characters ; Push the first character of the String into the stack ; Traverse the String s ; If Stack is empty ; Push current character into the stack ; Check if the current character is same as the top of the stack ; If true , pop the top of the stack ; Otherwise , push the current element ; Print stack from bottom to top ; Driver Code
using System ; using System . Collections . Generic ; class GFG { static void PrintStack ( Stack < char > s ) { if ( s . Count == 0 ) return ; char x = s . Peek ( ) ; s . Pop ( ) ; PrintStack ( s ) ; Console . Write ( ( char ) x ) ; s . Push ( x ) ; } static void minString ( String s ) { Stack < char > Stack = new Stack < char > ( ) ; Stack . Push ( s [ 0 ] ) ; for ( int i = 1 ; i < s . Length ; i ++ ) { if ( Stack . Count == 0 ) { Stack . Push ( s [ i ] ) ; } else { if ( Stack . Peek ( ) == s [ i ] ) { Stack . Pop ( ) ; } else { Stack . Push ( s [ i ] ) ; } } } PrintStack ( Stack ) ; } public static void Main ( String [ ] args ) { String str = "101001" ; minString ( str ) ; } }