题目描述: ''' 给你一个以字符串形式表述的 布尔表达式(boolean) expression,返回该式的运算结果。 有效的表达式需遵循以下约定: "t",运算结果为 True "f",运算结果为 False "!(expr)",运算过程为对内部表达式 expr 进行逻辑 非的运算(NOT) "&(expr1,expr2,...)",运算过程为对 2 个或以上内部表达式 expr1, expr2, ... 进行逻辑 与的运算(AND) "|(expr1,expr2,...)",运算过程为对 2 个或以上内部表达式 expr1, expr2, ... 进行逻辑 或的运算(OR) ''' 解题思路: 对于该题的求解,我们只需要遍历输入的字符串,然后去对应的将字符串的字符做一个转义最终通过.join()函数进行文本的拼接,即可实现目标。 代码: class Solution(): def parseBoolExpr(self, expression: str) -> bool: level = 0 sign = [""] exp = [] for e in expression: if e == "!": sign[level] = " not " exp.append("not") if e == "&": sign[level] = " and " if e == "|": sign[level] = " or " if e == "(": sign.append("") level += 1 exp.append("(") if e == ")": level -= 1 exp.append(")") if e == ",": exp.append(sign[level - 1]) if e == "f": exp.append('False') if e == "t": exp.append('True') return eval(''.join(exp)) if __name__ == '__main__': result = Solution().parseBoolExpr(expression="|(&(t,f,t),!(t))") print(result)
LeetCode每日一题11.5解析布尔表达式
最新推荐文章于 2024-06-14 05:45:37 发布