이 문제에서는 부울 표현식을 나타내는 문자열 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