leetcode 1021 刪除最外層的括號

2022-06-24 04:21:11 字數 1375 閱讀 4667

有效括號字串為空 ("")、"(" + a + ")" 或 a + b,其中 a 和 b 都是有效的括號字串,+ 代表字串的連線。例如,"","()","(())()" 和 "(()(()))" 都是有效的括號字串。

如果有效字串 s 非空,且不存在將其拆分為 s = a+b 的方法,我們稱其為原語(primitive),其中 a 和 b 都是非空有效括號字串。

給出乙個非空有效字串 s,考慮將其進行原語化分解,使得:s = p_1 + p_2 + ... + p_k,其中 p_i 是有效括號字串原語。

對 s 進行原語化分解,刪除分解中每個原語字串的最外層括號,返回 s 。

示例 1:

輸入:"(()())(())"

輸出:"()()()"

解釋:輸入字串為 "(()())(())",原語化分解得到 "(()())" + "(())",

刪除每個部分中的最外層括號後得到 "()()" + "()" = "()()()"。

示例 2:

輸入:"(()())(())(()(()))"

輸出:"()()()()(())"

解釋:輸入字串為 "(()())(())(()(()))",原語化分解得到 "(()())" + "(())" + "(()(()))",

刪除每個部分中的最外層括號後得到 "()()" + "()" + "()(())" = "()()()()(())"。

示例 3:

輸入:"()()"

輸出:""

解釋:輸入字串為 "()()",原語化分解得到 "()" + "()",

刪除每個部分中的最外層括號後得到 "" + "" = ""。

s.length <= 10000

s[i] 為 "(" 或 ")"

s 是乙個有效括號字串

class solution:

def removeouterparentheses(self, s: str) -> str:

i=0ss=''

n=0#'('加1,')'減1,等於0配對成功

l=0#配對成功的長度

while(i str:

i=0ss=''

p1=p2=0#雙指標

n=0#計算配對是否成功

while(i str:

i=0ss=''

ls=#(入棧,)出棧

n=0#記錄入棧個數

while(iif s[i]=='(':

n+=1

else:

ls.pop()

if not ls:

ss+=s[i-2*n+2:i]

n=0i+=1

return ss

LeetCode 1021 刪除最外層括號

有效括號字串為空 a 或 a b,其中 a 和 b 都是有效的括號字串,代表字串的連線。例如,和 都是有效的括號字串。如果有效字串 s 非空,且不存在將其拆分為 s a b 的方法,我們稱其為原語 primitive 其中 a 和 b 都是非空有效括號字串。給出乙個非空有效字串 s,考慮將其進行原語...

LeetCode 1021 刪除最外層的括號

有效括號字串為空 a 或 a b,其中 a 和 b 都是有效的括號字串,代表字串的連線。例如,和 都是有效的括號字串。如果有效字串 s 非空,且不存在將其拆分為 s a b 的方法,我們稱其為原語 primitive 其中 a 和 b 都是非空有效括號字串。給出乙個非空有效字串 s,考慮將其進行原語...

leetcode刪除最外層的括號 1021

有效括號字串為空 a 或 a b,其中 a 和 b 都是有效的括號字串,代表字串的連線。例如,和 都是有效的括號字串。如果有效字串 s 非空,且不存在將其拆分為 s a b 的方法,我們稱其為原語 primitive 其中 a 和 b 都是非空有效括號字串。給出乙個非空有效字串 s,考慮將其進行原語...