Hard
Parsing A Boolean Expression — Python
Full explanation · Time O(n) · Space O(n)
# Time: O(n)
# Space: O(n)
class Solution(object):
def parseBoolExpr(self, expression):
"""
:type expression: str
:rtype: bool
"""
def parse(expression, i):
if expression[i[0]] not in "&|!":
result = expression[i[0]] == 't'
i[0] += 1
return result
op = expression[i[0]]
i[0] += 2
stk = []
while expression[i[0]] != ')':
if expression[i[0]] == ',':
i[0] += 1
continue
stk.append(parse(expression, i))
i[0] += 1
if op == '&':
return all(stk)
if op == '|':
return any(stk)
return not stk[0]
return parse(expression, [0])