1021.最外層の括弧を削除する(Python)

1375 ワード

もっと素晴らしい内容は、「力ボタンの簡単な問題」に注目してください.
タイトル
難易度:★☆☆☆タイプ:文字列
有効な括弧文字列は、空(")、("+A+"))、またはA+Bであり、AとBは有効な括弧文字列であり、+は文字列の接続を表します.たとえば、「」、「()」、「()()()」および「()()()」)は、有効なカッコ文字列です.
有効文字列Sが空でなく、S=A+Bに分割する方法が存在しない場合は、AとBが空でない有効括弧文字列である原語(primitive)と呼ぶ.
非空有効文字列Sを与え、それを原語化分解することを考慮して、S=P_1 + P_2 + ... + P_k,そのうちP_iは有効な括弧文字列原語である.
Sを原語化分解し,分解中の各原語文字列の最外層括弧を削除し,Sを返す.
ヒントS.length<=10000 S[i]が「(」または「)」Sである有効括弧文字列

例1入力:「()()()()())」出力:「()()()」解釈:入力文字列が「((()()())())」であり、原語化分解して「((()()」+「(())」を得、各部分の最外カッコを削除して「()(」+「()」=「()()()」を得る.
例2入力:「()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())()))())()))(((()))((()))(()))(())()()()())()()))))())))()))()))()))()()()))()()())()())()()()()()()()()()()()()()()())()()()()))
例3入力:「()()」出力:「」解釈:入力文字列が「()()」であり、原語化分解で「(」+「()」が得られ、各部分の最外カッコを削除して「」+「」=「」が得られる.
に答える
リアルタイム変数lを括弧の層数マーカーとして用い,左括弧が現れるたびにl+1,右括弧が現れるたびにl=l−1,l=1が最外層を表し,l>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

質問やアドバイスがあれば、コメントエリアへようこそ~