1021. 刪除最外層的括號(hào)(Python)

更多精彩內(nèi)容,請關(guān)注【力扣簡單題】。

題目

難度:★★☆☆☆
類型:字符串

有效括號(hào)字符串為空 ("")、"(" + A + ")" 或 A + B,其中 A 和 B 都是有效的括號(hào)字符串,+ 代表字符串的連接。例如,"","()","(())()" 和 "(()(()))" 都是有效的括號(hào)字符串。

如果有效字符串 S 非空,且不存在將其拆分為 S = A+B 的方法,我們稱其為原語(primitive),其中 A 和 B 都是非空有效括號(hào)字符串。

給出一個(gè)非空有效字符串 S,考慮將其進(jìn)行原語化分解,使得:S = P_1 + P_2 + ... + P_k,其中 P_i 是有效括號(hào)字符串原語。

對 S 進(jìn)行原語化分解,刪除分解中每個(gè)原語字符串的最外層括號(hào),返回 S 。

提示
S.length <= 10000
S[i] 為 "(" 或 ")"
S 是一個(gè)有效括號(hào)字符串

示例

示例 1
輸入:"(()())(())"
輸出:"()()()"
解釋:
輸入字符串為 "(()())(())",原語化分解得到 "(()())" + "(())",
刪除每個(gè)部分中的最外層括號(hào)后得到 "()()" + "()" = "()()()"。

示例 2
輸入:"(()())(())(()(()))"
輸出:"()()()()(())"
解釋:
輸入字符串為 "(()())(())(()(()))",原語化分解得到 "(()())" + "(())" + "(()(()))",
刪除每隔部分中的最外層括號(hào)后得到 "()()" + "()" + "()(())" = "()()()()(())"。

示例 3
輸入:"()()"
輸出:""
解釋:
輸入字符串為 "()()",原語化分解得到 "()" + "()",
刪除每個(gè)部分中的最外層括號(hào)后得到 "" + "" = ""。

解答

我們使用一個(gè)實(shí)時(shí)變量l作為括號(hào)的層數(shù)標(biāo)記,每當(dāng)左括號(hào)出現(xiàn)時(shí),l+1,每當(dāng)右括號(hào)出現(xiàn)時(shí),l=l-1,l=1代表最外層,我們?nèi)>1的所有層即可。

class Solution:
    def removeOuterParentheses(self, S: str) -> str:
        l = 0
        res = ''
        for c in S:
            if c == '(':
                l += 1
                if l > 1:
                    res += c
            else:
                if l > 1:
                    res += c
                l -= 1
        return res

如有疑問或建議,歡迎評(píng)論區(qū)留言~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容