ধরুন আমাদের একটি স্ট্রিং আছে যাতে সুষম বন্ধনী রয়েছে "(" এবং ")", আমাদের সেগুলিকে সর্বাধিক সংখ্যক সুষম গোষ্ঠীতে বিভক্ত করতে হবে৷
সুতরাং, যদি ইনপুটটি "(()())()(())" এর মত হয়, তাহলে আউটপুট হবে ['(()())', '()', '(())']
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- temp :=ফাঁকা স্ট্রিং
- গোষ্ঠী :=একটি নতুন তালিকা
- গণনা :=0
- s তে b প্রতিটি অক্ষরের জন্য, করুন
- যদি গণনা 0 এর মত হয় এবং তাপমাত্রা> 0 এর আকার হয়, তাহলে
- গোষ্ঠীর শেষে temp সন্নিবেশ করান
- temp :=ফাঁকা স্ট্রিং
- temp :=temp concatenate b
- যদি b '(' এর মত হয়, তাহলে
- গণনা :=গণনা + 1
- অন্যথায়,
- গণনা :=গণনা - 1
- যদি গণনা 0 এর মত হয় এবং তাপমাত্রা> 0 এর আকার হয়, তাহলে
- গোষ্ঠীর শেষে temp সন্নিবেশ করান
- দল ফেরত দিন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution: def solve(self, s): temp = '' groups = [] count = 0 for b in s: if count == 0 and len(temp) > 0: groups.append(temp) temp = '' temp += b if b == '(': count += 1 else: count -= 1 groups.append(temp) return groups s = "(()())()(())" ob = Solution() print(ob.solve(s))
ইনপুট
"(()())()(())"
আউটপুট
['(()())', '()', '(())']