Skip to content

Commit e6e78d8

Browse files
committed
feat: add solutions to lc problem: No.1190. Reverse Substrings Between Each Pair of Parentheses
1 parent f3267fc commit e6e78d8

File tree

4 files changed

+115
-4
lines changed

4 files changed

+115
-4
lines changed

solution/1100-1199/1190.Reverse Substrings Between Each Pair of Parentheses/README.md

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,22 +53,59 @@
5353

5454
<!-- 这里可写通用的实现逻辑 -->
5555

56+
用双端队列或者栈,模拟反转过程
57+
5658
<!-- tabs:start -->
5759

5860
### **Python3**
5961

6062
<!-- 这里可写当前语言的特殊实现逻辑 -->
6163

6264
```python
63-
65+
class Solution:
66+
def reverseParentheses(self, s: str) -> str:
67+
stack = []
68+
for c in s:
69+
if c == ")":
70+
tmp = []
71+
while stack[-1] != "(":
72+
tmp += stack.pop()
73+
stack.pop()
74+
stack += tmp
75+
else:
76+
stack.append(c)
77+
return "".join(stack)
6478
```
6579

6680
### **Java**
6781

6882
<!-- 这里可写当前语言的特殊实现逻辑 -->
6983

7084
```java
71-
85+
class Solution {
86+
public String reverseParentheses(String s) {
87+
Deque<Character> deque = new ArrayDeque<>();
88+
for (char c : s.toCharArray()) {
89+
if (c == ')') {
90+
StringBuilder sb = new StringBuilder();
91+
while (deque.peekLast() != '(') {
92+
sb.append(deque.pollLast());
93+
}
94+
deque.pollLast();
95+
for (int i = 0, n = sb.length(); i < n; i++) {
96+
deque.offerLast(sb.charAt(i));
97+
}
98+
} else {
99+
deque.offerLast(c);
100+
}
101+
}
102+
StringBuilder sb = new StringBuilder();
103+
while (!deque.isEmpty()) {
104+
sb.append(deque.pollFirst());
105+
}
106+
return sb.toString();
107+
}
108+
}
72109
```
73110

74111
### **...**

solution/1100-1199/1190.Reverse Substrings Between Each Pair of Parentheses/README_EN.md

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,18 +53,55 @@
5353

5454
## Solutions
5555

56+
Use deque or stack to simulate the reversal process.
57+
5658
<!-- tabs:start -->
5759

5860
### **Python3**
5961

6062
```python
61-
63+
class Solution:
64+
def reverseParentheses(self, s: str) -> str:
65+
stack = []
66+
for c in s:
67+
if c == ")":
68+
tmp = []
69+
while stack[-1] != "(":
70+
tmp += stack.pop()
71+
stack.pop()
72+
stack += tmp
73+
else:
74+
stack.append(c)
75+
return "".join(stack)
6276
```
6377

6478
### **Java**
6579

6680
```java
67-
81+
class Solution {
82+
public String reverseParentheses(String s) {
83+
Deque<Character> deque = new ArrayDeque<>();
84+
for (char c : s.toCharArray()) {
85+
if (c == ')') {
86+
StringBuilder sb = new StringBuilder();
87+
while (deque.peekLast() != '(') {
88+
sb.append(deque.pollLast());
89+
}
90+
deque.pollLast();
91+
for (int i = 0, n = sb.length(); i < n; i++) {
92+
deque.offerLast(sb.charAt(i));
93+
}
94+
} else {
95+
deque.offerLast(c);
96+
}
97+
}
98+
StringBuilder sb = new StringBuilder();
99+
while (!deque.isEmpty()) {
100+
sb.append(deque.pollFirst());
101+
}
102+
return sb.toString();
103+
}
104+
}
68105
```
69106

70107
### **...**
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
class Solution {
2+
public String reverseParentheses(String s) {
3+
Deque<Character> deque = new ArrayDeque<>();
4+
for (char c : s.toCharArray()) {
5+
if (c == ')') {
6+
StringBuilder sb = new StringBuilder();
7+
while (deque.peekLast() != '(') {
8+
sb.append(deque.pollLast());
9+
}
10+
deque.pollLast();
11+
for (int i = 0, n = sb.length(); i < n; i++) {
12+
deque.offerLast(sb.charAt(i));
13+
}
14+
} else {
15+
deque.offerLast(c);
16+
}
17+
}
18+
StringBuilder sb = new StringBuilder();
19+
while (!deque.isEmpty()) {
20+
sb.append(deque.pollFirst());
21+
}
22+
return sb.toString();
23+
}
24+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution:
2+
def reverseParentheses(self, s: str) -> str:
3+
stack = []
4+
for c in s:
5+
if c == ")":
6+
tmp = []
7+
while stack[-1] != "(":
8+
tmp += stack.pop()
9+
stack.pop()
10+
stack += tmp
11+
else:
12+
stack.append(c)
13+
return "".join(stack)

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy