码迷,mamicode.com
首页 > 其他好文 > 详细

最长的有效括号

时间:2021-04-12 11:45:04      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:pre   pen   ack   更新   flag   lazy   else   image   http   

技术图片
技术图片

func longestValidParentheses(s string) int {
    stack := []int{}//存左括号的下标位置
    var n = len(s)
    flags := make([]int, n)
    var length = 0
    var maxLength = 0

    for i:=0;i<n;i++{
        // s[i]是左括号
        if s[i]==‘(‘{
            stack = append(stack, i)
        }else{
            // s[i]是右括号
            if len(stack)==0{
                // 多余的右括号,标记
                flags[i] = 1
            }else{
                // 右括号匹配
                stack = stack[:len(stack)-1]
            }
        }
    }
    // 未匹配的左括号是多余的,标记
    for len(stack)>0{
        flags[stack[len(stack)-1]] = 1
        stack = stack[:len(stack)-1]
    }

    // 寻找标记之间的最大长度
    for i:=0;i<n;i++{
        if flags[i]==0{
            length++
            maxLength = max(maxLength, length)//每次更新最大长度
        }else{
            length = 0
        }
    }

    return maxLength
}

func max(a, b int)int{
    if a>b{
        return a
    }
    return b
}

最长的有效括号

标签:pre   pen   ack   更新   flag   lazy   else   image   http   

原文地址:https://www.cnblogs.com/pangqianjin/p/14640783.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!