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
- 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 additons to make the string balanced
- Minimum number of deletions to make a string palindrome
- Minimum number of pairs required to make two strings same
- Minimum number of given operations required to make two strings equal
- Minimum number of Appends needed to make a string palindrome
- Minimum number of replacements to make the binary string alternating | Set 2
- Minimum number of bracket reversals needed to make an expression balanced
- Minimum number of bracket reversals needed to make an expression balanced | Set - 2
- Minimum number of characters to be removed to make a binary string alternate
- Find the minimum number of preprocess moves required to make two strings equal
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.