← All solutions
October 8Easy

Remove outermost parentheses

  • String
  • Stack
  • Bracket Sequences

Problem

A valid parentheses string is either empty "", "(" + A + ")", or A + B, where A and B are valid parentheses strings, and + represents string concatenation.

● For example, "", "()", "(())()", and "(()(()))" are all valid parentheses strings.

A valid parentheses string s is primitive if it is nonempty, and there does not exist a way to split it into s = A + B, with A and B nonempty valid parentheses strings.

Given a valid parentheses string s, consider its primitive decomposition: s = P1 + P2 + ... + Pk, where Pi are primitive valid parentheses strings.

Return s after removing the outermost parentheses of every primitive string in the primitive decomposition of s.

Solution

class Solution:
    def removeOuterParentheses(self, s: str) -> str:
        res = ""
        opened = 0
        for char in s:
            if char == "(":
                if opened:
                    res += char
                opened += 1
            else:
                opened -= 1
                if opened:
                    res += char
        return res