
- Python Basic Tutorial
- Python - Home
- Python - Overview
- Python - Environment Setup
- Python - Basic Syntax
- Python - Comments
- Python - Variables
- Python - Data Types
- Python - Operators
- Python - Decision Making
- Python - Loops
- Python - Numbers
- Python - Strings
- Python - Lists
- Python - Tuples
- Python - Dictionary
- Python - Date & Time
- Python - Functions
- Python - Modules
- Python - Files I/O
- Python - Exceptions
Program to find minimum remove required to make valid parentheses in Python
Suppose we have a string s with parenthesis '(' , ')' and lowercase English characters. We have to delete the minimum number of parentheses ( '(' or ')', from any positions ) so that the resulting parentheses string is valid and have to finally return any valid string. Here the parentheses string is valid when all of these criteria are fulfilled −
The string is empty and contains lowercase characters only, or
The string can be written as AB (A concatenated with B), where A and B are valid strings, or
The string can be written as the form of (A), where A is a valid string.
So, if the input is like s = "m)n(o)p", then the output will be "mn(o)p"
To solve this, we will follow these steps −
stack := a new list
indexes := a new set
i := 0
for each c in s, do
if c is same as '(', then
push i into stack
otherwise when c is same as ')', then
if size of stack is same as 0, then
insert i into indexes
otherwise,
pop from stack
i := i + 1
ret := blank string
indexes := store all elements into indexes
for i in range 0 to size of s - 1, do
if i not in indexes, then
ret := ret + s[i]
return ret
Example
Let us see the following implementation to get better understanding −
def solve(s): stack = [] indexes = set() i = 0 for c in s: if c == '(': stack.append(i) elif c == ')': if len(stack) == 0: indexes.add(i) else: stack.pop() i += 1 ret = '' indexes = indexes.union(stack) for i in range(len(s)): if i not in indexes: ret += s[i] return ret s = "m)n(o)p" print(solve(s))
Input
"m)n(o)p"
Output
mn(o)p
- Related Articles
- Minimum Remove to Make Valid Parentheses in C++
- Minimum Add to Make Parentheses Valid in Python
- Minimum number of Parentheses to be added to make it valid in C++
- Program to find minimum swaps required to make given anagram in python
- Program to find minimum number of operations required to make lists strictly Increasing in python
- Program to find minimum number of operations required to make one number to another in Python
- Program to find minimum insertions to balance a parentheses string using Python
- Longest Valid Parentheses in Python
- Program to find minimum number of operations required to make one string substring of other in Python
- Program to find minimum number of deletions required from two ends to make list balanced in Python
- Program to find minimum number of bricks required to make k towers of same height in Python
- Program to count number of minimum swaps required to make it palindrome in Python
- Minimum edges required to add to make Euler Circuit in Python
- Program to count minimum number of operations required to make numbers non coprime in Python?
- Program to find minimum moves to make array complementary in Python
