标签: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