Given a string S of parentheses ‘(‘ or ‘)’ where, . The task is to find minimum number of parentheses ‘(‘ or ‘)’ (at any positions) we must add to make the resulting parentheses string is valid.
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:
if ($bal == -1)
$ans += 1;
$bal += 1;
return $bal + $ans;
// Driver code
$p = “())”;
// Function to print required answer
// This code is contributed by ita_c
Time Complexity: O(N), where N is the length of S.
Space Complexity: O(1).
- Find the number of valid parentheses expressions of given length
- Minimum characters to be added at front to make string palindrome
- Minimum number of deletions to make a string palindrome
- Minimum number of deletions to make a string palindrome | Set 2
- Minimum number of given operations required to make two strings equal
- Minimum number of Appends needed to make a string palindrome
- Minimum number of bracket reversals needed to make an expression balanced
- Minimum number of characters to be removed to make a binary string alternate
- Minimum Number of Manipulations required to make two Strings Anagram Without Deletion of Character
- Minimum elements to be added so that two matrices can be multiplied
- Program to check for a Valid IMEI Number
- Minimum removals to make array sum even
- Minimum removal to make palindrome permutation
- Minimum Cost To Make Two Strings Identical
- Minimum operation require to make first and last character same
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. 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.