Description
Given a string containing just the characters '('
and ')'
, find the length of the longest valid (well-formed) parentheses substring.
Example 1:
1 | Input: "(()" |
Example 2:
1 | Input: ")()())" |
解法
括号匹配一般采用栈来处理,需要定义个start变量来记录合法括号串的起始位置,我们遍历字符串,如果遇到左括号,则将当前下标压入栈,如果遇到右括号,如果当前栈为空,说明之前没有左括号与之匹配,则将下一个坐标位置记录到start,如果栈不为空,则成功匹配这个右括号,将栈顶元素取出,此时若栈为空,说明从start位置到该右括号的所有括号均已匹配,更新结果和i - start + 1中的较大值,否则说明从当前出栈的前一个左括号的下一个开始均完成匹配(之所以不直接用匹配的左括号位置作为被减数是为了”(()()”的情况),更新结果和i - 栈顶元素中的较大值。
具体代码如下:
1 | class Solution { |