【栈】
首先,排除长度小于等于1的s
然后,遍历s,当前字符为'('时,将其索引填入stack;否则,判断stack是否为空,不为空就将stack最后一个'('的索引和当前索引i一起加入res
一次循环结束后,判断res是否为空,为空直接返回0
给res去重、排序
遍历res,找出连续索引的最大长度作为返回值
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param s string字符串
# @return int整型
#
class Solution:
def longestValidParentheses(self , s: str) -> int:
# write code here
if len(s)<=1:
return 0
stack=[]
res=[]
for i in range(len(s)):
if s[i]=='(':
stack.append(i)
else:
if stack:
res.extend([stack.pop(),i])
if not res:
return 0
res=list(set(res))
res.sort()
init=res[0]
l,s=0,0
for i in range(1,len(res)):
if res[i]!=init+1:
l=max(l,i-s)
s,init=i,res[i]
else:
if i==len(res)-1 and s==0:
l=len(res)
else:
init+=1
return l