Skip to content

Commit ed47d78

Browse files
committed
add LeetCode 1190. 反转每对括号间的子串
1 parent b7b9e33 commit ed47d78

File tree

1 file changed

+130
-0
lines changed

1 file changed

+130
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL2Nob2NvbGF0ZTE5OTkvY2RuL2ltZy8yMDIwMDgyODE0NTUyMS5qcGc?x-oss-process=image/format,png)
2+
>仰望星空的人,不应该被嘲笑
3+
4+
## 题目描述
5+
给出一个字符串 `s`(仅含有小写英文字母和括号)。
6+
7+
请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。
8+
9+
注意,您的结果中 不应 包含任何括号。
10+
11+
12+
13+
示例 1:
14+
15+
```javascript
16+
输入:s = "(abcd)"
17+
输出:"dcba"
18+
```
19+
20+
示例 2:
21+
22+
```javascript
23+
输入:s = "(u(love)i)"
24+
输出:"iloveu"
25+
```
26+
27+
示例 3:
28+
29+
```javascript
30+
输入:s = "(ed(et(oc))el)"
31+
输出:"leetcode"
32+
```
33+
34+
示例 4:
35+
36+
```javascript
37+
输入:s = "a(bcdefghijkl(mno)p)q"
38+
输出:"apmnolkjihgfedcbq"
39+
```
40+
41+
42+
43+
提示:
44+
45+
```javascript
46+
0 <= s.length <= 2000
47+
s 中只有小写英文字母和括号
48+
我们确保所有括号都是成对出现的
49+
```
50+
51+
来源:力扣(LeetCode)
52+
链接:https://leetcode-cn.com/problems/reverse-substrings-between-each-pair-of-parentheses
53+
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
54+
55+
56+
## 解题思路
57+
初始化栈,栈顶元素为 " "
58+
遇到` '('`: 向栈顶压入空字符串
59+
遇到` ')'`: 把栈顶的最后一个元素翻转 + 栈顶倒数第二个元素
60+
遇到 字符: 直接将栈顶最后一个元素与它拼上
61+
62+
<a href="https://leetcode-cn.com/problems/reverse-substrings-between-each-pair-of-parentheses/solution/1190-fan-zhuan-mei-dui-gua-hao-jian-de-zi-chuan-ji/
63+
">参考 tuotuoli 大佬解题思路</a>
64+
65+
样例栈数组操作示意:
66+
67+
```javascript
68+
样例:a(bcdefghijkl(mno)p)q
69+
70+
a ['a']
71+
( ['a', '']
72+
b ['a', 'b']
73+
c ['a', 'bc']
74+
d ['a', 'bcd']
75+
e ['a', 'bcde']
76+
f ['a', 'bcdef']
77+
g ['a', 'bcdefg']
78+
h ['a', 'bcdefgh']
79+
i ['a', 'bcdefghi']
80+
j ['a', 'bcdefghij']
81+
k ['a', 'bcdefghijk']
82+
l ['a', 'bcdefghijkl']
83+
( ['a', 'bcdefghijkl', '']
84+
m ['a', 'bcdefghijkl', 'm']
85+
n ['a', 'bcdefghijkl', 'mn']
86+
o ['a', 'bcdefghijkl', 'mno']
87+
) ['a', 'bcdefghijklonm']
88+
p ['a', 'bcdefghijklonmp']
89+
) ['apmnolkjihgfedcb']
90+
q ['apmnolkjihgfedcbq']
91+
```
92+
93+
```javascript
94+
/**
95+
* @param {string} s
96+
* @return {string}
97+
*/
98+
var reverseParentheses = function(s) {
99+
let stack = ['']
100+
for(let i=0;i<s.length;i++){
101+
let ch = s[i]
102+
if(ch === '('){
103+
stack.push('')
104+
}else if(ch === ')'){
105+
let str = stack.pop()
106+
let tmp = str.split('').reverse().join('')
107+
stack[stack.length-1] += tmp
108+
}else{
109+
stack[stack.length-1] += ch
110+
}
111+
}
112+
return stack.pop()
113+
};
114+
```
115+
116+
## 最后
117+
文章产出不易,还望各位小伙伴们支持一波!
118+
119+
往期精选:
120+
121+
<a href="https://github.com/Chocolate1999/Front-end-learning-to-organize-notes">小狮子前端の笔记仓库</a>
122+
123+
<a href="https://yangchaoyi.vip/">访问超逸の博客</a>,方便小伙伴阅读玩耍~
124+
125+
![](https://img-blog.csdnimg.cn/2020090211491121.png#pic_center)
126+
127+
```javascript
128+
学如逆水行舟,不进则退
129+
```
130+

0 commit comments

Comments
 (0)