A parentheses string is valid if and only if:

It is the empty string,
It can be written as AB (A concatenated with B), where A and B are valid strings, or
It can be written as (A), where A is a valid string.
You are given a parentheses string s. In one move, you can insert a parenthesis at any position of the string.

For example, if s = "()))", you can insert an opening parenthesis to be "(()))" or a closing parenthesis to be "())))".
Return the minimum number of moves required to make s valid.

题意:添加括号最少个数使括号合法。

有效括号的等价条件:
(1)“(”“)”个数相等

(2)任意前缀中左括号的个数大于等于右括号的个数

class Solution {
    public int minAddToMakeValid(String s) {
        int l=0,r=0;
        for(char c:s.toCharArray()){
            if(c=='(')l++;
            else{
                if(l==0)r++;
                else l--;
            }

        }
        return l+r;
    }
}