Skip to content

Commit fb45003

Browse files
committed
add LeetCode 921. 使括号有效的最少添加
1 parent bbab88a commit fb45003

File tree

1 file changed

+92
-0
lines changed

1 file changed

+92
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL2Nob2NvbGF0ZTE5OTkvY2RuL2ltZy8yMDIwMDgyODE0NTUyMS5qcGc?x-oss-process=image/format,png)
2+
>仰望星空的人,不应该被嘲笑
3+
4+
## 题目描述
5+
给定一个由` '('`` ')'` 括号组成的字符串 `S`,我们需要添加最少的括号`( '(' 或是 ')'`,可以在任何位置),以使得到的括号字符串有效。
6+
7+
从形式上讲,只有满足下面几点之一,括号字符串才是有效的:
8+
9+
它是一个空字符串,或者
10+
它可以被写成 `AB` (A 与 B 连接), 其中 A 和 B 都是有效字符串,或者
11+
它可以被写作 `(A)`,其中 A 是有效字符串。
12+
给定一个括号字符串,返回为使结果字符串有效而必须添加的最少括号数。
13+
14+
15+
16+
示例 1:
17+
18+
```javascript
19+
输入:"())"
20+
输出:1
21+
```
22+
23+
示例 2:
24+
25+
```javascript
26+
输入:"((("
27+
输出:3
28+
```
29+
30+
示例 3:
31+
32+
```javascript
33+
输入:"()"
34+
输出:0
35+
```
36+
37+
示例 4:
38+
39+
```javascript
40+
输入:"()))(("
41+
输出:4
42+
```
43+
44+
提示:
45+
46+
```javascript
47+
S.length <= 1000
48+
S 只包含 '('')' 字符。
49+
```
50+
51+
来源:力扣(LeetCode)
52+
链接:https://leetcode-cn.com/problems/minimum-add-to-make-parentheses-valid
53+
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
54+
55+
56+
## 解题思路
57+
借助一个新栈,然后遍历当前字符串,如果当前栈顶元素和目前字符括号匹配,则弹出栈顶元素,否则进行入栈操作,最后需要的括号数即为栈剩余的元素个数
58+
59+
```javascript
60+
/**
61+
* @param {string} S
62+
* @return {number}
63+
*/
64+
var minAddToMakeValid = function(S) {
65+
// 长度为0,无须添加
66+
if(!S.length) return 0
67+
let stack = []
68+
for(let i=0;i<S.length;i++){
69+
let ch = S[i]
70+
// 如果当前栈顶元素和目前字符括号匹配,则弹出栈顶元素
71+
if(ch === ')' && stack[stack.length-1] === '(') stack.pop()
72+
else stack.push(ch)
73+
}
74+
// 栈的剩余元素个数,即需要的括号数
75+
return stack.length
76+
};
77+
```
78+
79+
## 最后
80+
文章产出不易,还望各位小伙伴们支持一波!
81+
82+
往期精选:
83+
84+
<a href="https://github.com/Chocolate1999/Front-end-learning-to-organize-notes">小狮子前端の笔记仓库</a>
85+
86+
<a href="https://yangchaoyi.vip/">访问超逸の博客</a>,方便小伙伴阅读玩耍~
87+
88+
![](https://img-blog.csdnimg.cn/2020090211491121.png#pic_center)
89+
90+
```javascript
91+
学如逆水行舟,不进则退
92+
```

0 commit comments

Comments
 (0)