给你一个只包含 '('
和 ')'
的字符串,找出最长有效(格式正确且连续)括号子串的长度。
示例 1:
输入:s = "(()" 输出:2 解释:最长有效括号子串是 "()"
示例 2:
输入:s = ")()())" 输出:4 解释:最长有效括号子串是 "()()"
示例 3:
输入:s = "" 输出:0
提示:
0 <= s.length <= 3 * 104
s[i]
为'('
或')'
思路:记录每个打破成对括号规则的位置,那么最长的符合要求的长度就在这些位置之间 。
# @lc code=start
class Solution:
def longestValidParentheses(self,s: str) -> int:
if s=="":
return 0
length = len(s)
rev,div=list(),list()
i=0
lens=0
result=0
while i<=length-1:
lens=len(rev)
if s[i]=="(":
rev.append(s[i])
div.append(i)
elif lens!=0 and s[i]==")":
rev.pop()
#result=mid if mid >=result else result
div.pop()
else:
div.append(i)
#result=mid if mid >=result else result
i=i+1
res=list()
if div.count(length)==0:
div.append(length)
res.append(div[0])
if len(div)>1:
for i in range(1,len(div)):
res.append(div[i]-div[i-1]-1)
return max(res) if max(res)>result else result