在Python中找到给定字符串中最长有效括号的长度

在Python中找到给定字符串中最长有效括号的长度

假设我们有一个字符串s。这个字符串包含打开和关闭括号。我们要找到最长有效(格式正确)的括号子字符串的长度。因此,如果输入为“))(())()”,则结果将为6,因为有效字符串为“(())()”。

为了解决此问题,我们将遵循以下步骤 −

  • 创建一个堆栈,并插入-1,设置ans := 0

  • 对于i在范围0到堆栈长度-1之间

    • 如果s[i]是打开括号,则将i插入堆栈

    • 否则

      • 如果堆栈不为空且堆栈顶部不是-1,s[堆栈顶部]是打开括号,则

      • 弹出堆栈顶部元素

      • ans := ans和i-堆栈顶部的最大值

      • 否则将i插入堆栈

  • 返回ans

示例

让我们看以下实现以获得更好的理解−

class Solution(object):
   def solve(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.solve("))(())())"))

输入

"))(())())"

输出

6

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程