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;
    }
};