Python 中的最長有效括號
假設我們有一個包含左括號和右括號的字串。我們必須找到最長的有效(格式正確的)括號長度。因此,如果輸入類似於“))(())())”,則結果將為 6,因為有效字串為“(())()”。
為了解決此問題,我們將按照以下步驟進行操作 −
建立一個堆疊並插入 -1,設定 ans := 0
對於 i 在堆疊長度範圍的 0 到 length – 1 之間
如果 s[i] 為左括號,則將 i 插入堆疊
否則
如果堆疊不為空且堆疊頂部不為 -1 且 s[堆疊頂部] 為左括號,則
從堆疊中彈出頂部元素
ans := ans 和 i – 堆疊頂部的最大值
否則將 i 插入堆疊
返回 ans
示例
為了更好地理解,讓我們看看以下實現 −
class Solution(object): def longestValidParentheses(self, s): stack = [-1] ans = 0 for i in range(len(s)): if s[i] == "(": stack.append(i) else: if stack and stack[-1]!=-1 and s[stack[-1]] == "(": stack.pop() ans = max(ans,i - stack[-1]) else: stack.append(i) return ans ob = Solution() print(ob.longestValidParentheses("))(())())"))
輸入
"))(())())"
輸出
6
廣告