題目
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.
Subscribe to see which companies asked this question 題目要求
字串s由左右括弧組成(‘(‘,’)’),找到字串中最長有效括弧的子串。 解題思路
此題參考南郭子綦的思路。用一個棧來儲存左括弧的索引,遇到正確匹配的括弧則彈出匹配的索引,所以棧中儲存的是未匹配上的左括弧。新匹配上的括弧位置到前一段未匹配到的括弧的索引差極為有效括弧的大小。 代碼
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