ধরুন আমাদের দুটি বন্ধনী সিকোয়েন্স s এবং t আছে শুধুমাত্র এই '(' এবং ')' অক্ষরগুলির সাথে। আমাদের চেক করতে হবে যে s এবং t এর সংযুক্ত স্ট্রিংটি ভারসাম্যপূর্ণ কিনা। সংযোজন s | দ্বারা করা যেতে পারে t বা t | s.
সুতরাং, যদি ইনপুটটি s ="()())), t ="()(()(", তাহলে আউটপুটটি True হবে কারণ যদি আমরা t |s সংযুক্ত করি, তাহলে আমরা "() পাব। (()(()())), যা সুষম।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- একটি ফাংশন is_balanced_parenthesis() সংজ্ঞায়িত করুন। এটি স্ট্রিং লাগবে
- স্ট্যাক :=একটি নতুন তালিকা
- আমি 0 থেকে স্ট্রিং এর আকারের মধ্যে,
- করুন
- যদি স্ট্রিং[i] '(' এর মত হয়, তাহলে
- স্ট্যাকের মধ্যে স্ট্রিং[i] ঠেলে
- অন্যথায়,
- যদি স্ট্যাক খালি থাকে, তাহলে
- মিথ্যে ফেরত দিন
- অন্যথায়,
- স্ট্যাক থেকে পপ
- যদি স্ট্যাক খালি থাকে, তাহলে
- যদি স্ট্রিং[i] '(' এর মত হয়, তাহলে
- যদি স্ট্যাক খালি না হয়, তাহলে
- মিথ্যে ফেরত দিন
- সত্য ফেরান
- প্রধান পদ্ধতি থেকে নিম্নলিখিতগুলি করুন -
- যদি_ব্যালেন্সড_বন্ধনী(s + t) সত্য হয়, তাহলে
- সত্য ফেরান
- রিটার্ন হল_ব্যালেন্সড_বন্ধনী(t + s)
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
def is_balanced_parenthesis(string):
stack = []
for i in range(len(string)):
if string[i] == '(':
stack.append(string[i])
else:
if len(stack) == 0:
return False
else:
stack.pop()
if len(stack) > 0:
return False
return True
def solve(s, t):
if is_balanced_parenthesis(s + t):
return True
return is_balanced_parenthesis(t + s)
s = "()()))"
t = "()(()("
print(solve(s, t)) ইনপুট
"()()))", "()(()(") আউটপুট
True