ধরুন আমাদের কাছে S-এক্সপ্রেশন হিসেবে একটি স্ট্রিং আছে। আমাদের সেই S-এক্সপ্রেশন এবং রিটার্ন ফলাফলকে পূর্ণসংখ্যা হিসাবে মূল্যায়ন করতে হবে। আমরা জানি যে s-এক্সপ্রেশন হল একটি রাশি যা হয় একটি সংখ্যা, অথবা (+ (- 3 2) (* 3 3)) এর মতো বন্ধনীতে মোড়ানো একটি পুনরাবৃত্তিমূলক অভিব্যক্তি, যা নির্দেশ করে (3 - 2) + (3 * 3) =10. এখানে বৈধ অপারেটর হল +, -, *, এবং /।
সুতরাং, যদি ইনপুট s ="(- (+ 3 2) 2)" এর মত হয়, তাহলে আউটপুট হবে 3, যেমন ((3 + 2) - 2) =3।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
স্ট্যাক :=একটি নতুন স্ট্যাক
-
s
এর প্রারম্ভিক এবং বন্ধ বন্ধনী অপসারণ করুন -
a :=স্পেস ব্যবহার করে বিভক্ত করুন এবং পার্টিশনের একটি তালিকা তৈরি করুন
-
প্রতিটি i জন্য বিপরীত ক্রমে, করুন
-
যদি i> 1 এর আকার হয়, তাহলে
-
যদি i[0] হয় "-", তাহলে
-
স্ট্যাকের মধ্যে পূর্ণসংখ্যা হিসাবে i পুশ করুন
-
পরবর্তী পুনরাবৃত্তির জন্য যান
-
-
অন্যথায়,
-
স্ট্যাকের মধ্যে পূর্ণসংখ্যা হিসাবে i পুশ করুন
-
-
-
অন্যথায় যখন আমি একটি সংখ্যা, তারপর
-
স্ট্যাকের মধ্যে পূর্ণসংখ্যা হিসাবে i পুশ করুন
-
-
অন্যথায়,
-
যদি স্ট্যাকের আকার>=2, তাহলে
-
num1 :=স্ট্যাক থেকে পপ
-
num2 :=স্ট্যাক থেকে পপ
-
যদি আমি "+" এর মত হয়, তাহলে
-
num1 + num2 সম্পাদন করুন এবং স্ট্যাকের মধ্যে পুশ করুন
-
-
অন্যথায় যখন আমি "-" এর মতই থাকি তখন
-
num1 - num2 সম্পাদন করুন এবং স্ট্যাকের মধ্যে পুশ করুন
-
-
অন্যথায় যখন আমি "*" এর মতই থাকি, তখন
-
num1 * num2 সম্পাদন করুন এবং স্ট্যাকের মধ্যে পুশ করুন
-
-
অন্যথায়,
-
num1 / num2 সম্পাদন করুন এবং স্ট্যাকের মধ্যে পুশ করুন
-
-
-
-
-
স্ট্যাক থেকে শীর্ষ উপাদান ফিরিয়ে আনুন, এবং শীর্ষ উপাদান সরান
উদাহরণ
আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -
class Solution:
def solve(self, s):
stack = list()
s = s.replace("(", "")
s = s.replace(")", "")
a = s.split()
for i in a[::-1]:
if len(i) > 1:
if i[0] == "-":
stack.append(int(i))
continue
else:
stack.append(int(i))
elif i.isdigit():
stack.append(int(i))
else:
if len(stack) >= 2:
num1 = stack.pop()
num2 = stack.pop()
if i == "+":
stack.append(int(num1 + num2))
elif i == "-":
stack.append(int(num1 - num2))
elif i == "*":
stack.append(int(num1 * num2))
else:
stack.append(int(num1 / num2))
return stack.pop()
ob = Solution()
s = "(- (+ 3 2) 2)"
print(ob.solve(s)) ইনপুট
s = "(- (+ 3 2) 2)"
আউটপুট
3