package com.fishercoder.solutions;

import java.util.Stack;

/**
 * 32. Longest Valid Parentheses
 *
 * 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 class _32 {
  public static class Solution1 {
    public int longestValidParentheses(String s) {
      int result = 0;
      Stack<Integer> stack = new Stack();
      stack.push(-1);
      for (int i = 0; i < s.length(); i++) {
        if (s.charAt(i) == '(') {
          stack.push(i);
        } else {
          stack.pop();
          if (stack.isEmpty()) {
            stack.push(i);
          } else {
            result = Math.max(result, i - stack.peek());
          }
        }
      }
      return result;
    }
  }
}

@@ -236,21 +236,69 @@
 .%0A *
- For %22(()%22, t
+%0A * Example 1:%0A * Input: %22(()%22%0A * Output: 2%0A * Explanation: T
 he l
@@ -343,71 +343,75 @@
 %22()%22
-, which has length = 2.
+%0A *%0A * Example 2:
 %0A * 
-Another example is %22)()())%22, where t
+Input: %22)()())%22%0A * Output: 4%0A * Explanation: T
 he l
@@ -458,31 +458,8 @@
 )()%22
-, which has length = 4.
 %0A */

refactor 32