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
广告