Leetcode5470. 平衡括号字符串的最少插入次数【第 32 场双周赛】

题意:每个左括号匹配两个连续的右括号,问插入多少字符可使字符串平衡
思路:记录左括号的数量,每次遇见右括号判断是否为连续右括号,如果是,直接消去一个左括号 ( l e f t − − ) (left--) (left),如果不是,添加一个右括号;最后对于每一次消去,要判断左括号数量是否大于0,如果小于0了,补上一个左括号即可。
AC代码:

class Solution {
public:
    int minInsertions(string s) {
        int left=0,ans=0;
        for(int i=0;i<s.size();i++){
            if(s[i]=='(')
                left++;
            else{
                if(i+1<s.size()&&s[i+1]==')') i++;
                else ans++;
                left--;
                if(left<0) left++,ans++;
            }
        }
        return ans+left*2;
    }
};

写在最后:一开始没看清题,以为就是单纯的左一匹配右二,没注意连续右括号的条件,写了一会栈,写炸了。

你可能感兴趣的:(Leetcode)