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;
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.