在这个问题中,我们得到了一个表示布尔表达式的字符串exp。我们的任务是评估以String表示的布尔表达式。
表达式中的有效字符为-
0或1表示布尔值
&表示AND运算
| 表示OR运算
^表示XOR运算
我们需要解决这个表达式并返回结果。
输入: str = 1&1 | 0 ^ 1 ^ 0&1
输出: 0
解释:
1&1 | 0 ^ 1 ^ 0&1
1 AND 1或0 XOR 1 XOR 0 AND 1
1 OR 0 XOR 1 XOR 0 AND 1
1 XOR 1 XOR 0 AND 1
0 XOR 0 AND 1
0 AND 1
0
一个简单的解决方案是检查当前值,然后一个接一个地执行操作。为此,我们将考虑字符串的3-3个字符,然后返回其结果。
#include <iostream> using namespace std; int andOperation(int a, int b){ return a & b; } int orOperation(int a, int b){ return a | b; } int xorOperation(int a, int b){ return a^b; } char solveExpression(string s) { int n = s.length(); for (int i = 0; i < n; i += 2) { if (s[i + 1] == '&') { s[i + 2] = andOperation(s[i], s[i + 2]); } else if (s[i + 1] == '+') { s[i + 2] = orOperation(s[i], s[i + 2]); } else { s[i + 2] = xorOperation(s[i], s[i + 2]); } } return s[n - 1] ; } int main() { string expr = "0^1+0+1&1"; cout<<"表达的结果 "<<expr<<" is "<<solveExpression(expr); return 0; }
表达的结果 0^1+0+1&1 is 1