mirror of
https://github.com/TheAlgorithms/Python.git
synced 2025-04-11 00:05:54 +00:00
51 lines
854 B
Python
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)
|
|
|