本文最后更新于:2022年11月6日 晚上
题目描述
思路和实现
一眼用的计算中缀表达式的思路,直接用两个栈存运算符和布尔值了,不知道的话可以去了解一下。代码中也写出了较为详细的注释。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| class Solution: def parseBoolExpr(self, expression: str) -> bool: op_stack = [] num_stack = [] for i, char in enumerate(expression): if char == ",": continue elif char == "|" or char == "&" or char == "!": op_stack.append(char) continue elif char == ")": op = op_stack.pop() num_list = [] while num_stack[-1] != "(": num_list.append(num_stack.pop()) num_stack.pop() if op == "!": if num_list[0] == "f": num_stack.append("t") else: num_stack.append("f") elif op == "|": if "t" in num_list: num_stack.append("t") else: num_stack.append("f") else: if "f" in num_list: num_stack.append("f") else: num_stack.append("t") else: num_stack.append(char) return True if num_stack[0] == "t" else False
|
(这也能上困难题啊,那我希望困难都是这种难度)
希望本文章能够帮到您~