LeetCode 921. 使括号有效的最少添加(栈)
1. 题目
给定一个由 '(' 和 ')'
括号组成的字符串 S,我们需要添加最少的括号( '(' 或是 ')'
,可以在任何位置),以使得到的括号字符串有效。
从形式上讲,只有满足下面几点之一,括号字符串才是有效的:
- 它是一个空字符串,或者
- 它可以被写成 AB (A 与 B 连接), 其中 A 和 B 都是有效字符串,或者
- 它可以被写作 (A),其中 A 是有效字符串。
给定一个括号字符串,返回为使结果字符串有效而必须添加的最少括号数。
示例 1:
输入:"())"
输出:1示例 2:
输入:"((("
输出:3示例 3:
输入:"()"
输出:0示例 4:
输入:"()))(("
输出:4提示:
S.length <= 1000
S 只包含 '(' 和 ')' 字符。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-add-to-make-parentheses-valid
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
类似题目:LeetCode 5470. 平衡括号字符串的最少插入次数 medium
- 用栈来匹配,未匹配的在栈内留下来
class Solution {public:int minAddToMakeValid(string S) {stack<char> stk;for(int i = 0; i < S.size(); ++i){if(stk.empty())stk.push(S[i]);else{if(stk.top()=='(' && S[i]==')')stk.pop();elsestk.push(S[i]);}}return stk.size();//未匹配的字符数}
};
or
用左右括号计数来表示
class Solution {public:int minAddToMakeValid(string S) {int left = 0;int right = 0;for(char &c:S){if(c=='(') left++;else{if(left>0) //右括号可以与之匹配left--;else //右括号没有相应的左括号匹配right++;} }return left+right;}
};
LeetCode 921. 使括号有效的最少添加(栈)相关推荐
- [LeedCode]921. 使括号有效的最少添加
题目描述: 给定一个由 '(' 和 ')' 括号组成的字符串 S,我们需要添加最少的括号( '(' 或是 ')',可以在任何位置),以使得到的括号字符串有效.从形式上讲,只有满足下面几点之一,括号字符 ...
- 使括号有效的最少添加
使括号有效的最少添加 给定一个由(和)括号组成的字符串S,我们需要添加最少的括号(或是),可以在任何位置,以使得到的括号字符串有效. 从形式上讲,只有满足下面几点之一,括号字符串才是有效的: 它是一个 ...
- [Swift]LeetCode921.使括号有效的最少添加 | Minimum Add to Make Parentheses Valid
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
- 2022-3-25 Leetcode 921.使括号有效
第一版,我还是 too young,too naive class Solution {public:int minAddToMakeValid(string s) {int deep = 0;for ...
- LeetCode 1674. 使数组互补的最少操作次数(差分思想)
文章目录 1. 题目 2. 解题 1. 题目 给你一个长度为 偶数 n 的整数数组 nums 和一个整数 limit . 每一次操作,你可以将 nums 中的任何整数替换为 1 到 limit 之间的 ...
- LeetCode 1653. 使字符串平衡的最少删除次数(DP)
文章目录 1. 题目 2. 解题 1. 题目 给你一个字符串 s ,它仅包含字符 'a' 和 'b' . 你可以删除 s 中任意数目的字符,使得 s 平衡 . 我们称 s 平衡的 当不存在下标 ...
- LeetCode 1568. 使陆地分离的最少天数(DFS)
文章目录 1. 题目 2. 解题 1. 题目 给你一个由若干 0 和 1 组成的二维网格 grid ,其中 0 表示水,而 1 表示陆地. 岛屿由水平方向或竖直方向上相邻的 1 (陆地)连接形成. 如 ...
- LeetCode——1888. 使二进制字符串字符交替的最少反转次数(Minimum Number of Flips to Make the Binary ...)[中等]——分析及代码(Java)
LeetCode--1888. 使二进制字符串字符交替的最少反转次数[Minimum Number of Flips to Make the Binary String Alternating][中等 ...
- LeetCode Algorithm 22. 括号生成
22. 括号生成 Ideas 这是一道动态规划的题目,关于动态规划的题目我们可以从n比较小的情况下开始逐步分析. 当n=1时,["()"] 当n=2时,["()()&qu ...
最新文章
- 关于MySql中自增长id设置初始值
- 常用批处理命令总结之Find和FindStr
- ES5-6 作用域、作用域链、预编译、闭包基础
- React开发(175):注意在回调里面重新渲染列表
- java 大数四则运算_大数四则运算java(转)
- QSS按钮样式设置的坑,按下(pressed)时按钮颜色不变化
- 来自TMDB的5000部电影数据集
- MSXML应用总结 开发篇(上)
- linux出现bash什么意思,linux中bash是什么
- Moya 设置超时时间和请求头
- 机器学习习题(17)
- Dell服务器如何做raid
- 消息队列之取消会议和自动退款处理
- oracle事务之oracle读一致性
- alt tab无法切换窗口
- IDEA alt+ins快捷键失效问题解决方法
- Arduino空气污染温湿度MQ135烟雾检测报警ESP8266 手机App socket
- sql 批量更新时间字段加小时
- ubuntu20.04 vscode使用ROS(C++)
- 演艺界的二十位经典艺人[组图]
热门文章
- excel统计行数_值得收藏的6个Excel函数公式(有讲解)
- struct cdev结构体和cdev_init和cdev_add函数
- Qt 串口类QSerialPort 使用笔记
- 家用台式计算机的额定功率,台式机的功率(台式电脑电源功率多大才合适?)...
- 原码、反码、补码,以及负数的位操作
- MySQL源码编译与初始化
- [原创]C/C++语言中,如何在main.c或main.cpp中调用另一个.c文件
- bzoj2435: [Noi2011]道路修建 树上dp
- ApplicationContext容器的设计原理
- SubSonic中的字段付值--MakeOld Update