Day 38
Date: November 5, 2022 10:28 AM
LinkedIn: https://leetcode.cn/problems/parsing-a-boolean-expression/description/
Title: 解析布尔表达式
用栈进行计算
class Solution:
def parseBoolExpr(self, expression: str) -> bool:
stk = []
for x in expression:
if x in 'tf!&|': # 用于计算的数据入栈
stk.append(x)
elif x == ')':# 遇到闭合 要进行计算闭合内的式子
t = f = 0 # 初始化
while stk[-1] in 'tf':# 计算括号内 t, f个数
t += stk[-1] == 't'
f += stk[-1] == 'f'
stk.pop()
match stk.pop():
case '!':# 非运算 反转
c = 't' if f else 'f'
case '&':# 与运算有一个为假就假
c = 'f' if f else 't'
case '|': # 或运算有一个为真就真
c = 't' if t else 'f'
stk.append(c) # 计算结果入栈
return stk[0] == 't' # 字符转换为bool值