跳到主要内容

1106.解析布尔表达式

链接:1106.解析布尔表达式
难度:Hard
标签:栈、递归、字符串
简介:给你一个以字符串形式表述的 布尔表达式(boolean) expression,返回该式的运算结果。

题解 1 - cpp

  • 编辑时间:2022-11-05
  • 执行用时:4ms
  • 内存消耗:7MB
  • 编程语言:cpp
  • 解法介绍:递归遍历。
class Solution {
public:
int n, i;
string expression;
bool parseBoolExpr(string expression) {
this->expression = expression;
n = expression.size();
i = 0;
return _parseBoolExpr();
}
bool _parseBoolExpr() {
if (expression[i] == 't' || expression[i] == 'f') return expression[i++] == 't';
return nextBlock();
}
bool nextBlock() {
char op = expression[i];
i += 2;
bool init = true, cur;
while (i < n && expression[i] != ')') {
bool load = _parseBoolExpr();
if (init) cur = load, init = false;
else if (op == '|') cur |= load;
else if (op == '&') cur &= load;
if (expression[i] == ',') i++;
}
if (op == '!') cur = !cur;
i++;
return cur;
}
};