# Convert an unbalanced bracket sequence to a balanced sequence

Given an unbalanced bracket sequence of ‘(‘ and ‘)’, convert it into a balanced sequence by adding the minimum number of ‘(‘ at the beginning of the string and ‘)’ at the end of the string.

Examples:

Input: str = “)))()”
Output: “((()))()”

Input: str = “())())(())())”
Output: “(((())())(())())”

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach:

• Let us assume that whenever we encounter with opening bracket the depth increases by one and with a closing bracket the depth decreases by one.
• Find the maximum negative depth in minDep and add that number of ‘(‘ at the beginning.
• Then loop the new sequence to find the number of ‘)’s needed at the end of the string and add them.
• Finally, return the string.

Below is the implementation of the approach:

## C++

 `// C++ implementation of the approach ` `#include ` `using` `namespace` `std; ` ` `  `// Function to return balancedBrackets string ` `string balancedBrackets(string str) ` `{ ` `    ``// Initializing dep to 0 ` `    ``int` `dep = 0; ` ` `  `    ``// Stores maximum negative depth ` `    ``int` `minDep = 0; ` ` `  `    ``for` `(``int` `i = 0; i < str.length(); i++) { ` `        ``if` `(str[i] == ``'('``) ` `            ``dep++; ` `        ``else` `            ``dep--; ` ` `  `        ``// if dep is less than minDep ` `        ``if` `(minDep > dep) ` `            ``minDep = dep; ` `    ``} ` ` `  `    ``// if minDep is less than 0 then there ` `    ``// is need to add '(' at the front ` `    ``if` `(minDep < 0) { ` `        ``for` `(``int` `i = 0; i < ``abs``(minDep); i++) ` `            ``str = ``'('` `+ str; ` `    ``} ` ` `  `    ``// Reinitializing to check the updated string ` `    ``dep = 0; ` ` `  `    ``for` `(``int` `i = 0; i < str.length(); i++) { ` `        ``if` `(str[i] == ``'('``) ` `            ``dep++; ` `        ``else` `            ``dep--; ` `    ``} ` ` `  `    ``// if dep is not 0 then there ` `    ``// is need to add ')' at the back ` `    ``if` `(dep != 0) { ` `        ``for` `(``int` `i = 0; i < dep; i++) ` `            ``str = str + ``')'``; ` `    ``} ` `    ``return` `str; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``string str = ``")))()"``; ` `    ``cout << balancedBrackets(str); ` `} `

## Java

 `// Java implementation of the approach ` `import` `java.util.*; ` ` `  `class` `GFG ` `{ ` `         `  `// Function to return balancedBrackets string ` `static` `String balancedBrackets(String str) ` `{ ` `    ``// Initializing dep to 0 ` `    ``int` `dep = ``0``; ` ` `  `    ``// Stores maximum negative depth ` `    ``int` `minDep = ``0``; ` ` `  `    ``for` `(``int` `i = ``0``; i < str.length(); i++) ` `    ``{ ` `        ``if` `(str.charAt(i) == ``'('``) ` `            ``dep++; ` `        ``else` `            ``dep--; ` ` `  `        ``// if dep is less than minDep ` `        ``if` `(minDep > dep) ` `            ``minDep = dep; ` `    ``} ` ` `  `    ``// if minDep is less than 0 then there ` `    ``// is need to add '(' at the front ` `    ``if` `(minDep < ``0``) ` `    ``{ ` `        ``for` `(``int` `i = ``0``; i < Math.abs(minDep); i++) ` `            ``str = ``'('` `+ str; ` `    ``} ` ` `  `    ``// Reinitializing to check the updated string ` `    ``dep = ``0``; ` ` `  `    ``for` `(``int` `i = ``0``; i < str.length(); i++)  ` `    ``{ ` `        ``if` `(str.charAt(i) == ``'('``) ` `            ``dep++; ` `        ``else` `            ``dep--; ` `    ``} ` ` `  `    ``// if dep is not 0 then there ` `    ``// is need to add ')' at the back ` `    ``if` `(dep != ``0``) ` `    ``{ ` `        ``for` `(``int` `i = ``0``; i < dep; i++) ` `            ``str = str + ``')'``; ` `    ``} ` `    ``return` `str; ` `} ` ` `  `// Driver code ` `public` `static` `void` `main (String[] args)  ` `{ ` `    ``String str = ``")))()"``; ` `    ``System.out.println(balancedBrackets(str)); ` `} ` `} ` ` `  `// This code is contributed by ihritik `

## Python3

 `# Python3 implementation of the approach ` ` `  `# Function to return balancedBrackets String ` `def` `balancedBrackets(``Str``): ` `     `  `    ``# Initializing dep to 0 ` `    ``dep ``=` `0` ` `  `    ``# Stores maximum negative depth ` `    ``minDep ``=` `0` ` `  `    ``for` `i ``in` `Str``: ` `        ``if` `(i ``=``=` `'('``): ` `            ``dep ``+``=` `1` `        ``else``: ` `            ``dep ``-``=` `1` ` `  `        ``# if dep is less than minDep ` `        ``if` `(minDep > dep): ` `            ``minDep ``=` `dep ` ` `  `    ``# if minDep is less than 0 then there ` `    ``# is need to add '(' at the front ` `    ``if` `(minDep < ``0``): ` `        ``for` `i ``in` `range``(``abs``(minDep)): ` `            ``Str` `=` `'('` `+` `Str` ` `  `    ``# Reinitializing to check the updated String ` `    ``dep ``=` `0` ` `  `    ``for` `i ``in` `Str``: ` `        ``if` `(i ``=``=` `'('``): ` `            ``dep ``+``=` `1` `        ``else``: ` `            ``dep ``-``=` `1` ` `  `    ``# if dep is not 0 then there ` `    ``# is need to add ')' at the back ` `    ``if` `(dep !``=` `0``): ` `        ``for` `i ``in` `range``(dep): ` `            ``Str` `=` `Str` `+` `')'` ` `  `    ``return` `Str` ` `  `# Driver code ` `Str` `=` `")))()"` `print``(balancedBrackets(``Str``)) ` ` `  `# This code is contributed by Mohit Kumar `

## C#

 `// C# implementation of the approach ` `using` `System; ` ` `  `class` `GFG ` `{ ` `         `  `    ``// Function to return balancedBrackets string ` `    ``static` `string` `balancedBrackets(``string` `str) ` `    ``{ ` `        ``// Initializing dep to 0 ` `        ``int` `dep = 0; ` `     `  `        ``// Stores maximum negative depth ` `        ``int` `minDep = 0; ` `     `  `        ``for` `(``int` `i = 0; i < str.Length; i++)  ` `        ``{ ` `            ``if` `(str[i] == ``'('``) ` `                ``dep++; ` `            ``else` `                ``dep--; ` `     `  `            ``// if dep is less than minDep ` `            ``if` `(minDep > dep) ` `                ``minDep = dep; ` `        ``} ` `     `  `        ``// if minDep is less than 0 then there ` `        ``// is need to add '(' at the front ` `        ``if` `(minDep < 0)  ` `        ``{ ` `            ``for` `(``int` `i = 0; i < Math.Abs(minDep); i++) ` `                ``str = ``'('` `+ str; ` `        ``} ` `     `  `        ``// Reinitializing to check the updated string ` `        ``dep = 0; ` `     `  `        ``for` `(``int` `i = 0; i < str.Length; i++) ` `        ``{ ` `            ``if` `(str[i] == ``'('``) ` `                ``dep++; ` `            ``else` `                ``dep--; ` `        ``} ` `     `  `        ``// if dep is not 0 then there ` `        ``// is need to add ')' at the back ` `        ``if` `(dep != 0)  ` `        ``{ ` `            ``for` `(``int` `i = 0; i < dep; i++) ` `                ``str = str + ``')'``; ` `        ``} ` `        ``return` `str; ` `    ``} ` `     `  `    ``// Driver code ` `    ``public` `static` `void` `Main ()  ` `    ``{ ` `        ``String str = ``")))()"``; ` `        ``Console.WriteLine(balancedBrackets(str)); ` `    ``} ` `} ` ` `  `// This code is contributed by ihritik `

Output:

```((()))()
``` My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.