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:
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
- Least number to be added to or subtracted from N to make it a Perfect Square
- Least number to be added to or subtracted from N to make it a Perfect Cube
- Count pairs of parentheses sequences such that parentheses are balanced
- Minimum number of deletions to make a string palindrome | Set 2
- Minimum number of letters needed to make a total of n
- Minimum number of pairs required to make two strings same
- Minimum number of additons to make the string balanced
- Minimum number of deletions to make a string palindrome
- Minimum number of given operations required to make two strings equal
- Minimum number of replacements to make the binary string alternating | Set 2
- Minimum number of swaps to make two binary string equal
- Minimum number of Appends needed to make a string palindrome
- Minimum number of characters to be removed to make a binary string alternate
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.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.