Remove Outermost Parentheses

LeetCode Q 1021 - Remove Outermost Parentheses

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 = P_1 + P_2 + ... + P_k, where P_i are primitive valid parentheses strings.

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

Example 1: Input: "(()())(())" ; Output: "()()()"
Explanation:
The input string is "(()())(())", with primitive decomposition "(()())" + "(())".
After removing outer parentheses of each part, this is “()()” + “()” = “()()()”.

Example 2: Input: "(()())(())(()(()))" ; Output: "()()()()(())"
Explanation:
The input string is “(()())(())(()(()))”, with primitive decomposition “(()())” + “(())” + “(()(()))”.
After removing outer parentheses of each part, this is “()()” + “()” + “()(())” = “()()()()(())”.

Example 3: Input: "()()" ; Output: ""
Explanation:
The input string is “()()”, with primitive decomposition “()” + “()”.
After removing outer parentheses of each part, this is “” + “” = “”.

Note:

  • S.length <= 10000
  • S[i] is “(“ or “)”
  • S is a valid parentheses string

Solution

Code

public String removeOuterParentheses(String S) {
  if (S == null || S.length() == 0)
    return S;

  int left = 0, right = 0, start = 0;
  StringBuilder sb = new StringBuilder();

  for (int i = 0; i < S.length(); i++) {
    char ch = S.charAt(i);

    if (ch == '(') {
    	left++;
    } else {
    	right++;
    }

    if (left == right) {
    	sb.append(S.substring(start + 1, i));
    	start = i + 1;
    }
  }

  return sb.toString();
}

   Reprint policy


《Remove Outermost Parentheses》 by Tong Shi is licensed under a Creative Commons Attribution 4.0 International License
  TOC