首页 > 代码库 > LeetCode Longest Valid Parentheses

LeetCode 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.

 

 1 public class Solution { 2     public int longestValidParentheses(String s) { 3         if (s == null) { 4             return  0; 5         } 6         int maxlen=0; 7         Stack<Integer> stack = new Stack<Integer>(); 8         stack.add(-1); 9         for (int i = 0; i < s.length(); i++) {10             if (s.charAt(i) == ‘(‘) {11                 stack.add(i);12             } else {13                 stack.pop();14                 if (stack.isEmpty()) {15                     stack.add(i);16                 } else {17                     maxlen=Math.max(maxlen,i-stack.peek());18                 } 19             }20         }21         return maxlen;22     }23 }

 

LeetCode Longest Valid Parentheses