classSolution{publicintlongestValidParentheses(Strings){int ret =0;Deque<Integer> stack =newArrayDeque<>();stack.offerLast(-1);for(int i =0; i <s.length();++i){char c =s.charAt(i);if(c =='('){stack.offerLast(i);}elseif(c ==')'){if(!stack.isEmpty()){int prev =stack.pollLast();if(prev !=-1&&s.charAt(prev)=='('){ ret =Math.max(ret, i -stack.peekLast());}else{stack.offerLast(i);}}else{stack.offerLast(i);}}}return ret;}}