इस समस्या में, हमें एक स्ट्रिंग 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