简介
简单来说就是栈的使用。
思路:
当发现一个左括号的时候压入栈中,
遇到右括号的时候
检查下一个字符是否依旧是左括号,
如果不是则新增一次操作。
判断栈中是否有元素如果有元素那么弹出
如果没有元素那么新增一次操作
如果依旧是左括号
那么判断栈中是否有元素,如果有元素那么弹出
如果没有元素那么新增一次操作
同时 i++
最后判断一下栈中是否有元素,如果有的话,则要新增栈中元素个数*2的操作
参考链接
https://github.com/haoel/leetcode
https://github.com/lishaohsuai/leetCode
code
class Solution1406 {
public:
int minInsertions(string s) {
stack<char> leftBrackets;
int n = s.size();
int count = 0;
for(int i=0; i<n; i++){
if(s[i] == '('){
leftBrackets.push(s[i]);
}
int rightBracketsNum = 0;
if(s[i] == ')'){
if((i+1) < n && s[i+1] == ')'){
if(leftBrackets.size()){
leftBrackets.pop();
}else{
count++;
}
i++;
}else{
count++;
if(leftBrackets.size()){
leftBrackets.pop();
}else{
count++;
}
}
}
}
count += leftBrackets.size() * 2;
return count;
}
};