diff --git a/backtracking/Remove_Invalid_Parenthesis.py b/backtracking/Remove_Invalid_Parenthesis.py index 8b5a29dc9..862006d7f 100644 --- a/backtracking/Remove_Invalid_Parenthesis.py +++ b/backtracking/Remove_Invalid_Parenthesis.py @@ -1,50 +1,52 @@ def isParenthesis(c): - return ((c == '(') or (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 + 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) + 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) -