1106. 解析布尔表达式【困难】
1. 📝 题目描述
布尔表达式 是计算结果不是 true 就是 false 的表达式。有效的表达式需遵循以下约定:
't',运算结果为true'f',运算结果为false'!(subExpr)',运算过程为对内部表达式subExpr进行 逻辑非(NOT)运算'&(subExpr1, subExpr2, ..., subExprn)',运算过程为对 2 个或以上内部表达式subExpr1, subExpr2, ..., subExprn进行 逻辑与(AND)运算'|(subExpr1, subExpr2, ..., subExprn)',运算过程为对 2 个或以上内部表达式subExpr1, subExpr2, ..., subExprn进行 逻辑或(OR)运算
给你一个以字符串形式表述的 布尔表达式 expression,返回该式的运算结果。
题目测试用例所给出的表达式均为有效的布尔表达式,遵循上述约定。
示例 1:
txt
输入:expression = "&(|(f))"
输出:false
解释:
首先,计算 |(f) --> f,表达式变为 "&(f)"。
接着,计算 &(f) --> f,表达式变为 "f"。
最后,返回 false。1
2
3
4
5
6
2
3
4
5
6
示例 2:
txt
输入:expression = "|(f,f,f,t)"
输出:true
解释:计算 (false OR false OR false OR true),结果为 true。1
2
3
2
3
示例 3:
txt
输入:expression = "!(&(f,t))"
输出:true
解释:
首先,计算 &(f,t) --> (false AND true) --> false --> f,表达式变为 "!(f)"。
接着,计算 !(f) --> NOT false --> true,返回 true。1
2
3
4
5
2
3
4
5
提示:
1 <= expression.length <= 2 * 10^4expression[i]为'('、')'、'&'、'|'、'!'、't'、'f'和','之一
2. 🎯 s.1 - 解法 1
js
// todo1
- 时间复杂度:
- 空间复杂度:
3. 🔗 引用
- 布尔表达式
- 百度百科