一、题目
演示示例:
二、测试代码
class Solution {
public int minInsertions(String s) {
int need1=0,need2=0;//need1表示所需左括号数量,need2表示所需右括号数量
for(int i=0;i<s.length();i++){
if(s.charAt(i)=='('){
need2+=2;//一个左括号需要两个右括号即右括号数量一定为偶数
if(need2%2==1){//若右括号数量为奇数
need1++;//左括号加一
need2--;//右括号减一
}
}
if(s.charAt(i)==')'){
need2--;//遇见右括号将右括号数量减一
if(need2==-1){//遇见多余的右括号时,需要插入一个左括号且将右括号数量置为1
need1++;
need2=1;
}
}
}
return need1+need2;
}
}
三、运行情况
四、刷题总结
本题的主要思路:我们通过两个变量need1和need2,need1表示所需左括号数量,need2表示所需右括号数量。遍历遇见左括号时,一个左括号需要两个右括号即右括号数量一定为偶数,对右括号为奇数进行讨论;遍历遇见右括号时将右括号数量减一,遇见多余的右括号时即need2==-1,需要插入一个左括号且将右括号数量置为1。