Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit fb45003

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

File tree

1 file changed

+92
-0
lines changed

1 file changed

+92
-0
lines changed
Lines changed: 92 additions & 0 deletions
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)

AltStyle によって変換されたページ (->オリジナル) /