এই সমস্যায় আমাদের একটি স্ট্রিং exp দেওয়া হয়েছে যা একটি বুলিয়ান এক্সপ্রেশন উপস্থাপন করে। আমাদের কাজ হলো স্ট্রিং হিসেবে উপস্থাপিত বুলিয়ান এক্সপ্রেশনটি মূল্যায়ন করা।
এক্সপ্রেশনে বৈধ ক্যারেক্টারগুলো হলো:
- 0 বা 1 বুলিয়ান মান নির্দেশ করে
- & AND অপারেশন নির্দেশ করে
- | OR অপারেশন নির্দেশ করে
- ^ XOR অপারেশন নির্দেশ করে
আমাদের এই এক্সপ্রেশনটি সমাধান করে ফলাফল ফেরত দিতে হবে।
উদাহরণ দিয়ে বুঝি
ইনপুট: str = 1&1|0^1^0&1
আউটপুট: ০
ব্যাখ্যা:
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
সমাধানের পদ্ধতি
একটি সহজ সমাধান হলো বর্তমান মানগুলো চেক করে একে একে অপারেশন সম্পাদন করা। এর জন্য আমরা স্ট্রিংয়ের ৩-৩ ক্যারেক্টার বিবেচনা করে তাদের ফলাফল ফেরত দিব।
সমাধান minhaj করার প্রোগ্রাম
#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