可以使用栈来实现这个任务。遍历字符串 s
时,使用一个计数器 balance
来跟踪当前的嵌套深度。当 balance
为 0 时,意味着一个新的原语开始。
以下是实现代码:
def remove_outer_parentheses(s: str) -> str:
result = []
balance = 0 # 记录当前的嵌套深度
for char in s:
if char == '(':
if balance > 0: # 只有在嵌套深度大于0时才加入
result.append(char)
balance += 1
elif char == ')':
balance -= 1
if balance > 0: # 只有在减少后的嵌套深度仍大于0时才加入
result.append(char)
return "".join(result)
# 示例测试
s = "(()())(())"
print(remove_outer_parentheses(s)) # 输出 "()()()"
这个算法的时间复杂度是 O(n),其中 n 是字符串 s
的长度。它通过一次遍历即可完成分解和删除外层括号的任务。你可以用不同的测试用例来验证它的正确性!