Related Articles

# Minimum number of Parentheses to be added to make it valid

• Difficulty Level : Medium
• Last Updated : 19 May, 2021

Given a string S of parentheses ‘(‘ or ‘)’ where, . The task is to find a minimum number of parentheses ‘(‘ or ‘)’ (at any positions) we must add to make the resulting parentheses string is valid.
Examples:

Input: str = "())"
Output: 1
One '(' is required at beginning.

Input: str = "((("
Output: 3
Three ')' is required at end.

Approach: We keep the track of balance of the string i:e the number of ‘(‘ minus the number of ‘)’. A string is valid if its balance is 0, and also every prefix has non-negative balance.
Now, consider the balance of every prefix of S. If it is ever negative (say, -1), we must add a ‘(‘ bracket at the beginning. Also, if the balance of S is positive (say, +P), we must add P times ‘)’ brackets at the end.
Below is the implementation of the above approach:

## C++

 // C++ Program to find minimum number of '(' or ')'// must be added to make Parentheses string valid.#include using namespace std; // Function to return required minimum numberint minParentheses(string p){     // maintain balance of string    int bal = 0;    int ans = 0;     for (int i = 0; i < p.length(); ++i) {         bal += p[i] == '(' ? 1 : -1;         // It is guaranteed bal >= -1        if (bal == -1) {            ans += 1;            bal += 1;        }    }     return bal + ans;} // Driver codeint main(){     string p = "())";     // Function to print required answer    cout << minParentheses(p);     return 0;}

## Java

 // Java Program to find minimum number of '(' or ')'// must be added to make Parentheses string valid. public class GFG {     // Function to return required minimum number    static int minParentheses(String p)    {               // maintain balance of string        int bal = 0;        int ans = 0;               for (int i = 0; i < p.length(); ++i) {                   bal += p.charAt(i) == '(' ? 1 : -1;                   // It is guaranteed bal >= -1            if (bal == -1) {                ans += 1;                bal += 1;            }        }               return bal + ans;    }         public static void main(String args[])    {        String p = "())";                 // Function to print required answer        System.out.println(minParentheses(p));           }    // This code is contributed by ANKITRAI1}

## Python3

 # Python3 Program to find# minimum number of '(' or ')'# must be added to make Parentheses# string valid. # Function to return required# minimum numberdef minParentheses(p):         # maintain balance of string    bal=0    ans=0    for i in range(0,len(p)):        if(p[i]=='('):            bal+=1        else:            bal+=-1                     # It is guaranteed bal >= -1        if(bal==-1):            ans+=1            bal+=1    return bal+ans # Driver codeif __name__=='__main__':    p = "())"     # Function to print required answer    print(minParentheses(p))     # this code is contributed by# sahilshelangia

## C#

 // C# Program to find minimum number// of '(' or ')' must be added to// make Parentheses string valid.using System; class GFG{// Function to return required// minimum numberstatic int minParentheses(string p){     // maintain balance of string    int bal = 0;    int ans = 0;     for (int i = 0; i < p.Length; ++i)    {         bal += p[i] == '(' ? 1 : -1;         // It is guaranteed bal >= -1        if (bal == -1)        {            ans += 1;            bal += 1;        }    }     return bal + ans;} // Driver codepublic static void Main(){    string p = "())";     // Function to print required answer    Console.WriteLine(minParentheses(p));}} // This code is contributed// by Kirti_Mangal

## PHP

 = -1        if ($bal == -1) { $ans += 1;            $bal += 1; } }  return $bal + $ans;} // Driver code$p = "())"; // Function to print required answerecho minParentheses(\$p); // This code is contributed by ita_c?>

## Javascript

 
Output:
1

Time Complexity: O(N), where N is the length of S.
Space Complexity: O(1).

Attention reader! Don’t stop learning now. Participate in the Scholorship Test for First-Step-to-DSA Course for Class 9 to 12 students.

My Personal Notes arrow_drop_up