在 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
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP