您的位置:首页 > 编程语言 > Python开发

Leetcode||32. Longest Valid Parentheses

2017-10-10 19:07 375 查看
Given a string containing just the characters 
'('
 and 
')'
,
find the length of the longest valid (well-formed) parentheses substring.

For 
"(()"
, the longest valid parentheses substring is 
"()"
,
which has length = 2.

Another example is 
")()())"
, where the longest valid parentheses substring is 
"()()"
,
which has length = 4.

用一个栈来存储左括号的索引,遇到正确匹配的括号则弹出匹配的索引,所以栈中存储的是未匹配上的左括号。新匹配上的括号位置到前一段未匹配到的括号的索引差极为有效括号的大小。

class Solution(object):
def longestValidParentheses(self, s):
"""
:type s: str
:rtype: int
"""
stack = []
maxLen = 0
last = -1
for i in range(len(s)):
if s[i] == '(':
stack.append(i)
else:
if not stack:
last = i
else:
stack.pop()
if not stack:
maxLen = max(maxLen, i - last)
else:
maxLen = max(maxLen, i - stack[-1])
return maxLen
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python leetcode