mirror of
https://github.com/TheAlgorithms/Python.git
synced 2025-04-04 12:56:45 +00:00
53 lines
1.0 KiB
Python
53 lines
1.0 KiB
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)
|