LeetCode

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.

`package ds;import java.util.Stack;public class LongestValidParentheses {    public int longestValidParentheses(String s) {        int len;        if (s == null || (len = s.length()) < 2) return 0;        Stack<Integer> stack = new Stack<Integer>();        int max = 0;        int lastIndex = -1;        int i = 0;        while (i < len) {            if (s.charAt(i) == '(') {                stack.push(i);            } else {                if (stack.isEmpty()) {                    lastIndex = i;                } else {                    stack.pop();                    if (stack.isEmpty()) {                        max = Math.max(max, i - lastIndex);                    } else {                        max = Math.max(max, i - stack.peek());                    }                }            }            ++i;        }                return max;    }        public static void main(String[] args) {        // TODO Auto-generated method stub        LongestValidParentheses l = new LongestValidParentheses();        System.out.println(l.longestValidParentheses(""));    }}`