给你一个括号字符串 s ,它只包含字符 '(' 和 ')' 。一个括号字符串被称为平衡的当它满足:
任何左括号 '(' 必须对应两个连续的右括号 '))' 。
左括号 '(' 必须在对应的连续两个右括号 '))' 之前。
比方说 "())", "())(())))" 和 "(())())))" 都是平衡的, ")()", "()))" 和 "(()))" 都是不平衡的。
你可以在任意位置插入字符 '(' 和 ')' 使字符串平衡。
请你返回让 s 平衡的最少插入次数。
class Solution {
public int minInsertions(String s) {
int l_need = 0;
int r_need = 0;
for(char ch : s.toCharArray()){
if(ch == '('){
r_need += 2;
if(r_need % 2 == 1){
r_need--;
l_need++;
}
}else if(ch == ')'){
r_need--;
if(r_need == -1){
r_need += 2;
l_need++;
}
}
}
return r_need+l_need;
}
}
执行用时:8 ms, 在所有 Java 提交中击败了98.31%的用户
内存消耗:42 MB, 在所有 Java 提交中击败了27.88%的用户
通过测试用例:102 / 102