Skip to main content
Back to problems
#1021
Easy Algorithms

Remove outermost parentheses

String Stack
86.9% acceptance
Feb 25, 2026
3715
1715
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

Rust
Time O(n)
Space O(1)
LeetCode
solution.rs
impl Solution {
  pub fn remove_outer_parentheses(s: String) -> String {
    let mut depth = 0;
    let mut res = String::new();
    for c in s.chars() {
      if c == '(' { if depth > 0 { res.push(c); } depth += 1; }
      else { depth -= 1; if depth > 0 { res.push(c); } }
    }
    res
  }
}