评估在C ++中以字符串表示的布尔表达式

在这个问题中,我们得到了一个表示布尔表达式的字符串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