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
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP