3703. Remove K-Balanced Substrings Medium

@problem@discussion
#String#Stack#Simulation



1/**
2 * [3703] Remove K-Balanced Substrings
3 *
4 * You are given a string s consisting of '(' and ')', and an integer k.
5 * A string is k-balanced if it is exactly k consecutive '(' followed by k consecutive ')', i.e., '(' * k + ')' * k.
6 * For example, if k = 3, k-balanced is "((()))".
7 * You must repeatedly remove all non-overlapping k-balanced <span data-keyword="substring-nonempty">substrings</span> from s, and then join the remaining parts. Continue this process until no k-balanced substring exists.
8 * Return the final string after all possible removals.
9 *  
10 * ​​​​​​​<strong class="example">Example 1:
11 * <div class="example-block">
12 * Input: <span class="example-io">s = "(())", k = 1</span>
13 * Output: <span class="example-io">""</span>
14 * Explanation:
15 * k-balanced substring is "()"
16 * <table style="border: 1px solid black;">
17 * 	<thead>
18 * 		<tr>
19 * 			<th style="border: 1px solid black;">Step</th>
20 * 			<th style="border: 1px solid black;">Current s</th>
21 * 			<th style="border: 1px solid black;">k-balanced</th>
22 * 			<th style="border: 1px solid black;">Result s</th>
23 * 		</tr>
24 * 	</thead>
25 * 	<tbody>
26 * 		<tr>
27 * 			<td style="border: 1px solid black;">1</td>
28 * 			<td style="border: 1px solid black;">(())</td>
29 * 			<td style="border: 1px solid black;">(<s>()</s>)</td>
30 * 			<td style="border: 1px solid black;">()</td>
31 * 		</tr>
32 * 		<tr>
33 * 			<td style="border: 1px solid black;">2</td>
34 * 			<td style="border: 1px solid black;">()</td>
35 * 			<td style="border: 1px solid black;"><s>()</s></td>
36 * 			<td style="border: 1px solid black;">Empty</td>
37 * 		</tr>
38 * 	</tbody>
39 * </table>
40 * Thus, the final string is "".
41 * </div>
42 * <strong class="example">Example 2:
43 * <div class="example-block">
44 * Input: <span class="example-io">s = "(()(", k = 1</span>
45 * Output: <span class="example-io">"(("</span>
46 * Explanation:
47 * k-balanced substring is "()"
48 * <table style="border: 1px solid black;">
49 * 	<thead>
50 * 		<tr>
51 * 			<th style="border: 1px solid black;">Step</th>
52 * 			<th style="border: 1px solid black;">Current s</th>
53 * 			<th style="border: 1px solid black;">k-balanced</th>
54 * 			<th style="border: 1px solid black;">Result s</th>
55 * 		</tr>
56 * 	</thead>
57 * 	<tbody>
58 * 		<tr>
59 * 			<td style="border: 1px solid black;">1</td>
60 * 			<td style="border: 1px solid black;">(()(</td>
61 * 			<td style="border: 1px solid black;">(<s>()</s>(</td>
62 * 			<td style="border: 1px solid black;">((</td>
63 * 		</tr>
64 * 		<tr>
65 * 			<td style="border: 1px solid black;">2</td>
66 * 			<td style="border: 1px solid black;">((</td>
67 * 			<td style="border: 1px solid black;">-</td>
68 * 			<td style="border: 1px solid black;">((</td>
69 * 		</tr>
70 * 	</tbody>
71 * </table>
72 * Thus, the final string is "((".
73 * </div>
74 * <strong class="example">Example 3:
75 * <div class="example-block">
76 * Input: <span class="example-io">s = "((()))()()()", k = 3</span>
77 * Output: <span class="example-io">"()()()"</span>
78 * Explanation:
79 * k-balanced substring is "((()))"
80 * <table style="border: 1px solid black;">
81 * 	<thead>
82 * 		<tr>
83 * 			<th style="border: 1px solid black;">Step</th>
84 * 			<th style="border: 1px solid black;">Current s</th>
85 * 			<th style="border: 1px solid black;">k-balanced</th>
86 * 			<th style="border: 1px solid black;">Result s</th>
87 * 		</tr>
88 * 	</thead>
89 * 	<tbody>
90 * 		<tr>
91 * 			<td style="border: 1px solid black;">1</td>
92 * 			<td style="border: 1px solid black;">((()))()()()</td>
93 * 			<td style="border: 1px solid black;"><s>((()))</s>()()()</td>
94 * 			<td style="border: 1px solid black;">()()()</td>
95 * 		</tr>
96 * 		<tr>
97 * 			<td style="border: 1px solid black;">2</td>
98 * 			<td style="border: 1px solid black;">()()()</td>
99 * 			<td style="border: 1px solid black;">-</td>
100 * 			<td style="border: 1px solid black;">()()()</td>
101 * 		</tr>
102 * 	</tbody>
103 * </table>
104 * Thus, the final string is "()()()".
105 * </div>
106 *  
107 * Constraints:
108 * 
109 * 	2 <= s.length <= 10^5
110 * 	s consists only of '(' and ')'.
111 * 	1 <= k <= s.length / 2
112 * 
113 */
114pub struct Solution {}
115
116// problem: https://leetcode.com/problems/remove-k-balanced-substrings/
117// discuss: https://leetcode.com/problems/remove-k-balanced-substrings/discuss/?currentPage=1&orderBy=most_votes&query=
118
119// submission codes start here
120
121impl Solution {
122    pub fn remove_substring(s: String, k: i32) -> String {
123        String::new()
124    }
125}
126
127// submission codes end
128
129#[cfg(test)]
130mod tests {
131    use super::*;
132
133    #[test]
134    fn test_3703() {
135    }
136}
137

Back
© 2026 bowen.ge All Rights Reserved.