ধরুন আমাদের একটি স্ট্রিং আছে যার মধ্যে বন্ধনী বন্ধনী আছে "(" এবং ")", আমাদের সুষম বন্ধনীর দীর্ঘতম অনুসারীর দৈর্ঘ্য খুঁজে বের করতে হবে।
সুতরাং, যদি ইনপুটটি s ="())(()(" এর মত হয়, তাহলে আউটপুট হবে 4, যেহেতু আমরা "()()"
এর মত পরবর্তিটি নিতে পারি।এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
res :=0
-
n :=s এর আকার
-
বন্ধ করুন :=0
-
n - 1 থেকে 0 রেঞ্জে i এর জন্য, 1 দ্বারা হ্রাস করুন, করুন
-
যদি s[i] ")" এর মত হয়, তাহলে
-
বন্ধ :=বন্ধ + 1
-
-
অন্যথায়,
-
যদি বন্ধ হয়> 0, তাহলে
-
বন্ধ :=বন্ধ - 1
-
res :=res + 2
-
-
-
-
রিটার্ন রিটার্ন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution:
def solve(self, s):
res = 0
n = len(s)
close = 0
for i in range(n - 1, -1, -1):
if s[i] == ")":
close += 1
else:
if close > 0:
close -= 1
res += 2
return res
ob = Solution()
s = "())(()("
print(ob.solve(s)) ইনপুট
"())(()(") আউটপুট
4