Leetcode 921 minimum add to make parentheses Valid

题目:求最少添加多少个括号,让括号对有效

https://leetcode.com/problems/minimum-add-to-make-parentheses-valid/description/

题意:计算要让整个括号valid的最小个数是多少

遇到左括号cnt++,统计需要右括号的个数,当cnt < 0,说明右括号多,这个时候要添加左括号了,最后把cnt加入到结果中就好了。

为什么不能从头到尾扫一遍,求左右括号的差值,因为比如())((),这个时候左右括号的差值是0,但是我其实需要添加两个括号,要维持括号的性质

cpp 复制代码
class Solution {
public:
    int minAddToMakeValid(string s) {
        int cnt = 0;
        int ret = 0;
        for(int i = 0; i < s.size(); i++) {
            if(s[i] == '(') {
                cnt++;
            }
            if(s[i] == ')') {
                cnt--;
            }
            if(cnt < 0) {
                ret++;
                cnt = 0;
            }
        }
        ret += cnt;
        return ret;
    }
};
相关推荐
第六种自由几秒前
[路飞]_Leetcode 22. 括号生成
javascript·算法·leetcode
isyoungboy3 分钟前
事件驱动状态机与循环扫描状态机:两种计算模型的比较研究
算法·状态机
考研保研资料分享29 分钟前
北大软微软件工程保研经验:哈工大面试追问与补录风险取舍
面试·职场和发展·软件工程
longlongzihan39 分钟前
LeetCode 24.两两交换链表中的节点:虚拟头结点与指针
算法·leetcode·链表
residual_fan40 分钟前
基于控制感知域对抗网络的变工况故障诊断:从控制系统与运行状态协同的角度建立模型
人工智能·算法·数据挖掘·数据分析
Xin77040 分钟前
LeetCode 105. 从前序与中序遍历序列构造二叉树(递归分治法)
leetcode
翻山越岭的少年1 小时前
用控制信号理解状态变化:基于控制感知域对抗网络的变工况故障诊断
算法
longlongzihan1 小时前
从LeetCode 19. 删除链表的倒数第 N 个结点深入理解“哨兵节点”
c++·算法·leetcode·链表
yuanxi2001 小时前
长鑫科技4F架构突破:技术节点如何改写客户价值判断
职场和发展·创业创新·学习方法
DeroZan1 小时前
# jieba 分词 & 文本语料分析 & Python 内置函数笔记
算法