3703. Remove K-Balanced Substrings Medium
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}
137Back
© 2026 bowen.ge All Rights Reserved.