LeetCode Java First 400 문제 풀이 - 032

1564 단어 문 제 를 풀다
Longest Valid Parentheses    Hard
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.
public int longestValidParentheses(String s) {
    Stack stack = new Stack();
    int max = 0;
    int left = -1;
    for (int j = 0; j < s.length(); j++) {
        if (s.charAt(j) == '(')
            stack.push(j);
        else {
            if (stack.isEmpty())
                left = j;
            else {
                stack.pop();
                if (stack.isEmpty())
                    max = Math.max(max, j - left);
                else
                    max = Math.max(max, j - stack.peek());
            }
        }
    }
    return max;
}
  :      。      ,         ,          ,          。    :               。

좋은 웹페이지 즐겨찾기