2
def parseBoolExpr(self, expression: str) -> bool:5
opMap = {"!": "!", "|": "|", "&": "&"}6
expMap = {"t": True, "f": False}12
while i < len(expression):14
if expression[i] in opMap:15
opStack.append(opMap[expression[i]])17
elif expression[i] in expMap:18
expStack.append(expMap[expression[i]])20
elif expression[i] == "(":23
# strat performing operations24
elif expression[i] == ")":26
ans = [] # evaluator arr29
# print("EXPSTACK :- ", expStack, "OPSTACK :- ", opStack, "outer WHILE")31
# Performing serries of operation on exp inside a ()32
while expStack[-1] != "(":35
# print("EXPSTACK :- ", expStack, "OPSTACK :- ", opStack, "OPerator :- ",op, "INNER WHILE")37
# Not single operation only39
ans.append(not expStack.pop())41
ans.append(expStack.pop())43
# Operation evaluation for more then 1 exp inside () for &, or47
exp1, exp2 = ans.pop(), ans.pop()52
exp1, exp2 = ans.pop(), ans.pop()56
# poping ")" and adding the res of operation done above57
expStack.pop() # poping ")"58
expStack.append(ans[-1])67
TC : O(n * m) | n = len(expression), m = no of expression inside a prenthesis