import java.util.*;
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<>();
//默认-1位置,如果是有效的,那么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;
}
}