有效括號(hào)字符串為空?("")、"(" + A + ")"?或?A + B,其中?A 和?B?都是有效的括號(hào)字符串,+?代表字符串的連接。例如,"","()","(())()"?和?"(()(()))"?都是有效的括號(hào)字符串。
如果有效字符串?S?非空,且不存在將其拆分為?S = A+B?的方法,我們稱其為原語(yǔ)(primitive),其中?A 和?B?都是非空有效括號(hào)字符串。
給出一個(gè)非空有效字符串?S,考慮將其進(jìn)行原語(yǔ)化分解,使得:S = P_1 + P_2 + ... + P_k,其中?P_i?是有效括號(hào)字符串原語(yǔ)。
對(duì)?S?進(jìn)行原語(yǔ)化分解,刪除分解中每個(gè)原語(yǔ)字符串的最外層括號(hào),返回 S?。
示例 1:
輸入:"(()())(())"
輸出:"()()()"
解釋:
輸入字符串為 "(()())(())",原語(yǔ)化分解得到 "(()())" + "(())",
刪除每個(gè)部分中的最外層括號(hào)后得到 "()()" + "()" = "()()()"。
示例 2:
輸入:"(()())(())(()(()))"
輸出:"()()()()(())"
解釋:
輸入字符串為 "(()())(())(()(()))",原語(yǔ)化分解得到 "(()())" + "(())" + "(()(()))",
刪除每隔部分中的最外層括號(hào)后得到 "()()" + "()" + "()(())" = "()()()()(())"。
示例 3:
輸入:"()()"
輸出:""
解釋:
輸入字符串為 "()()",原語(yǔ)化分解得到 "()" + "()",
刪除每個(gè)部分中的最外層括號(hào)后得到 "" + "" = ""。
?
提示:
S.length <= 10000
S[i] 為?"(" 或?")"
S 是一個(gè)有效括號(hào)字符串
?
這里只要求去除最外層的括號(hào),比較簡(jiǎn)單,如果要化簡(jiǎn)成最簡(jiǎn)形式的話,或許可以多次迭代(每次去除最外層重復(fù)括號(hào))直至棧不再變化,只需稍微注意一下flag先進(jìn)行加減還是先判斷即可
class Solution:
def removeOuterParentheses(self, S: str) -> str:
stack = []
flag = 0
s = ""
for i in range(len(S)):
if S[i] == "(":
if flag != 0:
s = s + S[i]
flag += 1
elif S[i] == ")":
flag -= 1
if flag != 0:
s = s + S[i]
return s
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
