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)两个数组的交集
简单的数据类型转换

本文介绍了一种使用栈来解析布尔表达式的方法,并通过具体的LeetCode题目进行了解析过程的展示。该方法适用于含有逻辑运算符 '!', '&', '|' 的表达式。
8万+

被折叠的 条评论
为什么被折叠?



