1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
public class LongestValidParentheses { public int longestValidParentheses(String s) { if (s == null || s.length() < 2) { return 0; } Stack<Integer> stack = new Stack<Integer>(); int max = 0; for (int i = 0; i < s.length(); i++) { if (s.charAt(i) == ')' && !stack.isEmpty() && s.charAt(stack.peek()) == '(') { stack.pop(); if (stack.isEmpty()) { max = i + 1; } else { max = Math.max(max, i - stack.peek()); } } else { stack.push(i); } } return max; } }
|