class Solution {
public:
bool parseBoolExpr(string expression) {
stack<char> st;
for (int i = 0; i < expression.size(); ++i) {
char c = expression[i];
if (c == ')') {
unordered_set<char> seen;
while (!st.empty() && st.top() != '(') {
seen.insert(st.top()); st.pop();
}
st.pop();
char op = st.top(); st.pop();
if (op == '&') {
st.push(seen.count('f') ? 'f' : 't');
} else if (op == '|') {
st.push(seen.count('t') ? 't' : 'f');
} else {
st.push(seen.count('t') ? 'f' : 't');
}
} else if (c != ',') {
st.push(c);
}
}
return st.top() == 't';
}
};
1106. 解析布尔表达式
最新推荐文章于 2024-09-26 22:35:07 发布