Open In App

Balance a string after removing extra brackets

Given a string of characters with opening and closing brackets. The task is to remove extra brackets from string and balance it.

Examples: 

Input: str = “gau)ra)v(ku(mar(rajput))” 
Output: gaurav(ku(mar(rajput)))

Input: str = “1+5)+5+)6+(5+9)*9” 
Output: 1+5+5+6+(5+9)*9

Approach: 

Below is the implementation of above approach: 




// C++ implementation of above approach
#include <bits/stdc++.h>
using namespace std;
 
// Print balanced and remove
// extra brackets from string
void balancedString(string str)
{
    int count = 0, i;
    int n = str.length();
 
    // Maintain a count for opening brackets
    // Traversing string
    for (i = 0; i < n; i++) {
 
        // check if opening bracket
        if (str[i] == '(') {
 
            // print str[i] and increment count by 1
            cout << str[i];
            count++;
        }
 
        // check if closing bracket and count != 0
        else if (str[i] == ')' && count != 0) {
            cout << str[i];
 
            // decrement count by 1
            count--;
        }
 
        // if str[i] not a closing brackets
        // print it
        else if (str[i] != ')')
            cout << str[i];
    }
 
    // balanced brackets if opening brackets
    // are more then closing brackets
    if (count != 0)
        // print remaining closing brackets
        for (i = 0; i < count; i++)
           cout << ")";
}
 
// Driver code
int main()
{
 
    string str = "gau)ra)v(ku(mar(rajput))";
     balancedString(str);
 
    return 0;
}




// Java implementation of above approach
class GFG {
 
// Print balanced and remove
// extra brackets from string
public static void balancedString(String str)
{
    int count = 0, i;
    int n = str.length();
 
    // Maintain a count for opening brackets
    // Traversing string
    for (i = 0; i < n; i++) {
 
        // check if opening bracket
        if (str.charAt(i) == '(') {
 
            // print str.charAt(i) and increment count by 1
            System.out.print(str.charAt(i));
            count++;
        }
 
        // check if closing bracket and count != 0
        else if (str.charAt(i) == ')' && count != 0) {
            System.out.print(str.charAt(i));
 
            // decrement count by 1
            count--;
        }
 
        // if str.charAt(i) not a closing brackets
        // print it
        else if (str.charAt(i) != ')')
            System.out.print(str.charAt(i));
    }
 
    // balanced brackets if opening brackets
    // are more then closing brackets
    if (count != 0)
        // print remaining closing brackets
        for (i = 0; i < count; i++)
            System.out.print(")");
}
 
// Driver Method
public static void main(String args[])
{
    String str = "gau)ra)v(ku(mar(rajput))";
    balancedString(str);
}
}




# Python implementation of above approach
 
# Print balanced and remove
# extra brackets from string
def balancedString(str):
    count, i = 0, 0
    n = len(str)
 
    # Maintain a count for opening
    # brackets Traversing string
    for i in range(n):
 
        # check if opening bracket
        if (str[i] == '('):
 
            # print str[i] and increment
            # count by 1
            print(str[i], end = "")
            count += 1
             
        # check if closing bracket and count != 0
        elif (str[i] == ')' and count != 0):
            print(str[i], end = "")
 
            # decrement count by 1
            count -= 1
             
        # if str[i] not a closing brackets
        # print it
        elif (str[i] != ')'):
            print(str[i], end = "")
             
    # balanced brackets if opening brackets
    # are more then closing brackets
    if (count != 0):
         
        # print remaining closing brackets
        for i in range(count):
            print(")", end = "")
 
# Driver code
if __name__ == '__main__':
    str = "gau)ra)v(ku(mar(rajput))"
    balancedString(str)
 
# This code is contributed by 29AjayKumar




// C# implementation of above approach
using System;
 
class GFG
{
 
// Print balanced and remove
// extra brackets from string
public static void balancedString(String str)
{
    int count = 0, i;
    int n = str.Length;
 
    // Maintain a count for opening
    // brackets Traversing string
    for (i = 0; i < n; i++)
    {
 
        // check if opening bracket
        if (str[i] == '(')
        {
 
            // print str[i] and increment
            // count by 1
            Console.Write(str[i]);
            count++;
        }
 
        // check if closing bracket
        // and count != 0
        else if (str[i] == ')' && count != 0)
        {
            Console.Write(str[i]);
 
            // decrement count by 1
            count--;
        }
 
        // if str[i] not a closing
        // brackets print it
        else if (str[i] != ')')
            Console.Write(str[i]);
    }
 
    // balanced brackets if opening
    // brackets are more then closing
    // brackets
    if (count != 0)
     
        // print remaining closing brackets
        for (i = 0; i < count; i++)
            Console.Write(")");
}
 
// Driver Code
public static void Main()
{
    String str = "gau)ra)v(ku(mar(rajput))";
    balancedString(str);
}
}
 
// This code is contributed
// by PrinciRaj1992




<?php
// PHP implementation of above approach
 
// Print balanced and remove
// extra brackets from string
function balancedString($str)
{
    $count = 0;
    $n = strlen($str);
 
    // Maintain a count for opening
    // brackets Traversing string
    for ($i = 0; $i < $n; $i++)
    {
 
        // check if opening bracket
        if ($str[$i] == '(')
        {
 
            // print str[i] and increment
            // count by 1
            echo $str[$i];
            $count++;
        }
 
        // check if closing bracket and count != 0
        else if ($str[$i] == ')' && $count != 0)
        {
            echo $str[$i];
 
            // decrement count by 1
            $count--;
        }
 
        // if str[i] not a closing brackets
        // print it
        else if ($str[$i] != ')')
            echo $str[$i];
    }
 
    // balanced brackets if opening brackets
    // are more then closing brackets
    if ($count != 0)
     
        // print remaining closing brackets
        for ($i = 0; $i < $count; $i++)
        echo ")";
}
 
// Driver code
$str = "gau)ra)v(ku(mar(rajput))";
balancedString($str);
 
// This code is contributed
// by Akanksha Rai
?>




<script>
 
// javascript implementation of above approach
 
// Print balanced and remove
// extra brackets from string
function balancedString( str)
{
    var count = 0, i;
    var n = str.length;
   
    // Maintain a count for opening
    // brackets Traversing string
    for (i = 0; i < n; i++)
    {
   
        // check if opening bracket
        if (str[i] == '(')
        {
   
            // print str[i] and increment
            // count by 1
            document.write(str[i]);
            count++;
        }
   
        // check if closing bracket
        // and count != 0
        else if (str[i] == ')' && count != 0)
        {
            document.write(str[i]);
   
            // decrement count by 1
            count--;
        }
   
        // if str[i] not a closing
        // brackets print it
        else if (str[i] != ')')
            document.write(str[i]);
    }
   
    // balanced brackets if opening
    // brackets are more then closing
    // brackets
    if (count != 0)
       
        // print remaining closing brackets
        for (i = 0; i < count; i++)
            document.write(")");
}
   
// Driver Code
  
    var str = "gau)ra)v(ku(mar(rajput))";
    balancedString(str);
 
// This code is contributed by bunnyram19.
</script>

Output
gaurav(ku(mar(rajput)))

Complexity Analysis:


Article Tags :