Leetcode 3703. Remove K-Balanced Substrings
- Leetcode 3703. Remove K-Balanced Substrings
- 1. 解题思路
- 2. 代码实现
- 题目链接:3703. Remove K-Balanced Substrings
1. 解题思路
这一题思路上就是一个堆栈的思路,我们只需要将所有的括号进行聚合,然后统一进行进栈以及消除操作即可。
2. 代码实现
给出python代码实现如下:
class Solution:def removeSubstring(self, s: str, k: int) -> str:stack = []prev, cnt = "(", 0def push(stack, ch, cnt):if len(stack) == 0:stack.append([ch, cnt])elif ch == stack[-1][0]:stack[-1] = [ch, stack[-1][1] + cnt]elif ch == "(":stack.append([ch, cnt])else:while stack and cnt >= k and stack[-1][1] >= k:stack[-1][1] -= kcnt -= kif stack[-1][-1] == 0:stack.pop()if stack and stack[-1][0] == ch:cnt += stack.pop()[1]if cnt > 0:if len(stack) == 0 or stack[-1][0] != ch:stack.append([ch, cnt])else:stack[-1] = [ch, stack[-1][1] + cnt]returnfor ch in s:if ch == prev:cnt += 1continueif cnt != 0:push(stack, prev, cnt)prev, cnt = ch, 1push(stack, ch, cnt)ans = ""for ch, cnt in stack:ans += ch * cntreturn ans
提交代码评测得到:耗时255ms,占用内存22.75MB。