মনে করুন s একটি স্ট্রিং যা ব্যালেন্সড প্যারেনথেসিস "(" এবং ")" ধারণ করে। আমাদের এটিকে সর্বোচ্চ সংখ্যক ব্যালেন্সড গ্রুপে ভাগ করতে হবে।
উদাহরণস্বরূপ, "(()())()(())" হলে আউটপুট ['(()())', '()', '(())']।
সমাধানের ধাপসমূহ
- temp := খালি স্ট্রিং
- groups := নতুন তালিকা
- count := 0
- প্রতিটি ক্যারেক্টার b s-এ,
- যদি count == 0 এবং temp-এর দৈর্ঘ্য > 0, তবে
- groups-এ temp যোগ করুন
- temp := খালি স্ট্রিং
- temp += b
- যদি b == '(', count++
- অন্যথায়, count--
- যদি count == 0 এবং temp-এর দৈর্ঘ্য > 0, তবে
- groups-এ temp যোগ করুন
- groups ফেরত দিন
উদাহরণ
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))ইনপুট
"(()())()(())"
আউটপুট
['(()())', '()', '(())']