• 32. 最长有效括号


    问题描述

    给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。

    方法1:栈

    class Solution:
        def longestValidParentheses(self, s: str) -> int:
            # 栈
            lenth = len(s)
            stack = [-1]
            res = 0
            for i in range(lenth):
                if s[i] == '(':
                    stack.append(i)
                else:
                    stack.pop()
                    if not stack:
                        stack.append(i)
                    else:
                        res = max(res, i - stack[-1])     
    
            return res
    

    方法2:贪心一点

    class Solution:
        def longestValidParentheses(self, s: str) -> int:
            #贪心一点,左-->右,右-->左
            lenth = len(s)
            res = 0
            # 左--> 右 
            left = right = 0
            for val in s:
                if val == '(':
                    left += 1
                else:
                    right += 1
                if left == right:
                    res = max(res, 2 * left)
                elif right > left:
                    left = right = 0
    
            # 右-->左
            left = right = 0
            for i in range(lenth - 1, -1, -1):
                if s[i] == ')':
                    right += 1
                else:
                    left += 1
                if left == right:
                    res = max(res, 2 * left)
                elif left > right:
                    left = right = 0
            
            return res
    
  • 相关阅读:
    平衡的括号(栈)
    二叉树遍历
    Ohana Cleans Up0101
    Missing number
    Django框架之模板层
    Django框架之路由层、视图层
    Django框架
    Django初识
    前端之bootstrap
    前端之BOM、DOM
  • 原文地址:https://www.cnblogs.com/libbin/p/longest-Valid-Parentheses.html
Copyright © 2020-2023  润新知