public class Solution {
/**
*
* @param s string字符串
* @return int整型
*/
public int longestValidParentheses (String s) {
// write code here
if(s == null || s.length() == 0){
return 0;
}
int n = s.length();
int maxAns = 0;
Stack<Integer> stack = new Stack<>();
stack.push(-1);
for(int i = 0 ;i< n;i++){
if(s.charAt(i) == '('){
stack.push(i);
}else{
//如果是 )
stack.pop();
if(stack.isEmpty()){
//说明这不是一个有效括号 记录下最后匹配的那个括号的位置 下一次就从那里开始
stack.push(i);
}else{
//如果匹配后还不是空的,说明有效
maxAns = Math.max(maxAns, i - stack.peek() );
}
}
}
return maxAns;
}
}