美文网首页
leetcode32 最长有效括号

leetcode32 最长有效括号

作者: XaviSong | 来源:发表于2020-07-08 17:54 被阅读0次

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

示例 1:

输入: "(()"
输出: 2
解释: 最长有效括号子串为 "()"

示例 2:

输入: ")()())"
输出: 4
解释: 最长有效括号子串为 "()()"

解题思路:

使用栈结合字符串的遍历来处理,关键点是:

  • 怎么处理入栈出栈的条件
  • 栈中的元素是什么
  • 怎么获取长度

一个巧妙的办法是,栈中每次存进下标,下标相减即可获得长度,同时,入栈的原则是

当前字符不会消去已有括号元素时,进行入栈。

class Solution:
    def longestValidParentheses(self, s: str) -> int:
        '''
        使用栈进行处理,遍历字符串长度,每次压入括号下标,通过下标
        相减得到差值。注意入栈的条件:
        1、栈为空
        2、当前遍历字符为左括号
        3、栈顶为右括号
        注意边界条件:字符串s为空
        以及输入匹配括号序列时,最后一次退栈会造成栈空没有栈顶,需要提前垫-1
        这时的栈空条件就变成栈中只有-1一个元素
        '''
        if not s:
            return 0
        result = 0
        stack = [-1,]
        for i in range(len(s)):
            if '(' == s[i] or len(stack) == 1 or ')' == s[stack[-1]]:
                stack.append(i)
            else:
                stack.pop()
                result = max(result, i - stack[-1])
        return result

相关文章

  • leetcode动态规划问题汇总(陆续更新中。。。)

    题目 2019.12.26更新。。。 leetcode5 最长回文子串leetcode32 最长有效括号leetc...

  • LeetCode热门100题算法和思路(day3)

    LeetCode32 最长有效括号 题目详情 给你一个只包含 '('和 ')'的字符串,找出最长有效(格式正确且连...

  • leetcode32 最长有效括号

    给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。 示例 1: 示例 2: 解题思...

  • leetcode32 最长有效括号

    题目 给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。示例 1: 输入: "((...

  • 最长有效括号

    题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/long...

  • 最长有效括号

    //给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。//输入:s = ...

  • 最长有效括号

    难点在于()()如何匹配前面的连续(),还有(())如何处理 举例:s[i-2]==")" ()([)]=>dp[...

  • 最长有效括号

    32. 最长有效括号 题目: 给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串...

  • LeetCode-32-最长有效括号

    LeetCode-32-最长有效括号 题目 给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的...

  • LeeCode刷题笔记4:最长有效括号

    @[TOC](最长有效括号) 题目描述 给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串...

网友评论

      本文标题:leetcode32 最长有效括号

      本文链接:https://www.haomeiwen.com/subject/kvzccktx.html