leetcode 1541

简介

简单来说就是栈的使用。
思路:

当发现一个左括号的时候压入栈中,
遇到右括号的时候
   检查下一个字符是否依旧是左括号,
      如果不是则新增一次操作。
      判断栈中是否有元素如果有元素那么弹出
      如果没有元素那么新增一次操作
   如果依旧是左括号
      那么判断栈中是否有元素,如果有元素那么弹出
      如果没有元素那么新增一次操作
      同时 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;
    }
};
原文地址:https://www.cnblogs.com/eat-too-much/p/14270401.html