简介
简单来说就是栈的使用。
思路:
当发现一个左括号的时候压入栈中,
遇到右括号的时候
检查下一个字符是否依旧是左括号,
如果不是则新增一次操作。
判断栈中是否有元素如果有元素那么弹出
如果没有元素那么新增一次操作
如果依旧是左括号
那么判断栈中是否有元素,如果有元素那么弹出
如果没有元素那么新增一次操作
同时 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;
}
};
---------------------------我的天空里没有太阳,总是黑夜,但并不暗,因为有东西代替了太阳。虽然没有太阳那么明亮,但对我来说已经足够。凭借着这份光,我便能把黑夜当成白天。我从来就没有太阳,所以不怕失去。
--------《白夜行》