이 문제에서는 부울 표현식을 나타내는 문자열 exp가 제공됩니다. 우리의 임무는 String으로 표현되는 부울 표현식을 평가하는 것입니다.
표현식의 유효한 문자는 -
입니다.
부울 값을 나타내는 0 또는 1
&를 나타내는 AND 연산
| OR 연산을 나타내는
^ XOR 연산을 나타냄
이 식을 풀고 결과를 반환해야 합니다.
문제를 이해하기 위해 예를 들어 보겠습니다.
입력: str =1&1|0^1^0&1
출력: 0
설명:
1&1|0^1^0&1
1 및 1 또는 0 XOR 1 XOR 0 및 1
1 또는 0 XOR 1 XOR 0 및 1
1 XOR 1 XOR 0 및 1
0 XOR 0 및 1
0과 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