有效括號字符串為空?("")、"(" + 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 是一個有效括號字符串
?
這里只要求去除最外層的括號,比較簡單,如果要化簡成最簡形式的話,或許可以多次迭代(每次去除最外層重復括號)直至棧不再變化,只需稍微注意一下flag先進行加減還是先判斷即可
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
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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