leetcode的每日一题 解析布尔表达式
布尔表达式的运算
使用栈,当为‘,’时跳过该字符,当为除右括号和逗号以外的字符时压入栈中,当为右括号时开始将元素弹出栈,当栈顶元素为左括号时将它两者弹出,计算‘t’和‘f’的个数,后进行逻辑判断。
代码如下
class Solution:
def parseBoolExpr(self, expression: str) -> bool:
stkt = []
for ch in expression:
if ch == ',':
continue
if ch != ')':
stkt.append(ch)
continue
t = f = 0
while stkt[-1] != '(':
if stkt.pop() == 't':
t += 1
else:
f += 1
stkt.pop()
op = stkt.pop()
if op == '!':
stkt.append('t' if f == 1 else 'f')
elif op == '&':
stkt.append('t' if f == 0 else 'f')
elif op == '|':
stkt.append('t' if t else 'f')
return stkt[-1] == 't'
上效果图
Matrix每日一题(leetcode)两个数组的交集
简单的数据类型转换