思路
使用栈进行原语化分解
例:
s = “(()())(())”
创建保存原语的列表S = []
创建栈stack = []
flag = 0
遍历s,若值为s[i] = ‘(’ 则加入stack,若值为s[i] = ‘)’ 则从stack尾部弹出一个数据
判断stack若为空,则将s[flag:i+1]插入S尾部,flag = i + 1
重复上述步骤,直至遍历s结束
上述操作结束后S = [‘(()())’, ‘(())’]
只需要将S中每一个元素两边的括号去掉组成新的字符串返回即可
代码
class Solution:
def removeOuterParentheses(self, s: str) -> str:
S = []
stack = []
flag = 0
for i in range(len(s)):
if s[i]=='(':
stack.append(s[i])
else:
del stack[-1]
if len(stack)==0:
S.append(s[flag+1:i])
flag = i + 1
print(S)
return ''.join(S)