在 C++ 中評估表示為字串的布林表示式


在這個問題中,我們得到一個表示布林表示式的字串 exp。我們的任務是評估表示為字串的布林表示式。

表示式中的有效字元為:

0 或 1 表示布林值
& 表示 AND 操作

| 表示 OR 操作
^ 表示 XOR 操作

我們需要解決這個表示式並返回結果。

讓我們舉個例子來理解這個問題:

輸入:str = 1&1|0^1^0&1

輸出:0

解釋:

1&1|0^1^0&1

1 AND 1 OR 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<<"The result of expression "<<expr<<" is "<<solveExpression(expr);
   return 0;
}

輸出 -

The result of expression 0^1+0+1&1 is 1

更新於: 2021年1月22日

614 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.