文章作者:Tyan
博客:noahsnail.com | 优快云 | 简书
1. Description

2. Solution
**解析:**Version 1,使用栈来求解,当碰到逻辑运算、(以及操作数时,入栈,当每次碰到)时,先将操作数出栈,然后再将逻辑运算出栈,计算逻辑运算的结果,将结果压入栈中,最终,栈中只剩下最终结果。
- Version 1
class Solution:
def parseBoolExpr(self, expression: str) -> bool:
operations = []
for i in range(len(expression)):
if expression[i] == '&' or expression[i] == '|' or expression[i] == '!' or expression[i] == '(':
operations.append(expression[i])
elif expression[i] == 't':
operations.append(True)
elif expression[i] == 'f':
operations.append(False)
elif expression[i] == ')':
operators = []
while operations[-1] != '(':
operators.append(operations.pop(-1))
operations.pop(-1)
logic = operations.pop(-1)
if logic == '&':
temp = True
for val in operators:
temp &= val
elif logic == '|':
temp = False
for val in operators:
temp |= val
else:
temp = not operators[-1]
operations.append(temp)
return operations[-1]
本文介绍了如何使用栈数据结构解析布尔表达式,通过遍历输入字符串,遇到逻辑运算符、括号和操作数时进行相应的入栈操作,最终得到计算结果。作者提供了详细的解析过程及Python代码实现。
322

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



