Python/backtracking/Remove_Invalid_Parenthesis.py
2024-10-31 11:56:48 +05:30

51 lines
854 B
Python

def isParenthesis(c):
return ((c == '(') or (c == ')'))
def isValidString(str):
cnt = 0
for i in range(len(str)):
if (str[i] == '('):
cnt += 1
elif (str[i] == ')'):
cnt -= 1
if (cnt < 0):
return False
return (cnt == 0)
# method to remove invalid parenthesis
def removeInvalidParenthesis(str):
if (len(str) == 0):
return
visit = set()
q = []
temp = 0
level = 0
q.append(str)
visit.add(str)
while(len(q)):
str = q[0]
q.pop(0)
if (isValidString(str)):
print(str)
level = True
if (level):
continue
for i in range(len(str)):
if (not isParenthesis(str[i])):
continue
temp = str[0:i] + str[i + 1:]
if temp not in visit:
q.append(temp)
visit.add(temp)
expression = "()())()"
removeInvalidParenthesis(expression)
expression = "()v)"
removeInvalidParenthesis(expression)