思路1:使用栈,栈空的时候,把遍历的这部分数据去掉两边加到结果集中。
时间复杂度O(n):遍历
空间复杂度O(n):栈
class Solution:
def removeOuterParentheses(self, S: str) -> str:
tmpstack = []
ans = ""
n = len(S)
pre = 0
for i in range(n):
if S[i] =="(":
tmpstack.append("(")
else:
tmpstack.pop()
if not tmpstack:
ans+=S[pre+1:i]
pre = i+1
return ans
思路2:不用栈,仅仅计数
时间复杂度O(n):遍历
空间复杂度O(1):
class Solution:
def removeOuterParentheses(self, S: str) -> str:
tmpstack = 0
ans = ""
n = len(S)
pre = 0
for i in range(n):
if S[i] =="(":
tmpstack+=1
else:
tmpstack-=1
if not tmpstack:
ans+=S[pre+1:i]
pre = i+1
return ans