मान लीजिए हमारे पास एक स्ट्रिंग s है जिसमें ब्रैकेट्स '(' और ')' हैं, हमें संतुलित ब्रैकेट्स के सबसे लंबे उप-अनुक्रम की लंबाई ढूंढनी है।
उदाहरण के लिए, यदि इनपुट s = "())(()(" है, तो आउटपुट 4 होगा, क्योंकि हम "()()" जैसा उप-अनुक्रम ले सकते हैं।
इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:
res := 0,n := len(s),close := 0।iकोn-1से 0 तक घटाते हुए लूप में चलाएं:यदि
s[i] == ')', तोclose += 1।अन्यथा (यदि '(' है):
यदि
close > 0, तोclose -= 1औरres += 2।
resलौटाएं।
उदाहरण
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