Remove Outermost Parentheses - Stacks - Easy - LeetCode
💻 coding

Remove Outermost Parentheses - Stacks - Easy - LeetCode

1 min read 282 words
1 min read
ShareWhatsAppPost on X
  • 1A valid parentheses string can be empty or structured as '(', A, ')' or A + B.
  • 2Primitive valid parentheses strings cannot be split into two nonempty valid strings.
  • 3The algorithm removes outer parentheses from each primitive string in a valid parentheses input.

AI-generated summary · May not capture all nuances

Key Insight
AskGif

"A valid parentheses string can be empty or structured as '(', A, ')' or A + B."

Remove Outermost Parentheses - Stacks - Easy - LeetCode

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

public class Solution {
 public string RemoveOuterParentheses(string S) {
 var sb = new StringBuilder();
 var stack = new Stack<char>(); 
 var open = 0;
 for(int i=0;i<S.Length;i++){
 if(S[i]=='('){
 if(open>0){
 sb.Append("(");
 }
 open++; 
 }
 else if(S[i]==')'){
 if(open>1){
 sb.Append(")");
 }
 open--;
 } 
 }
 
 return sb.ToString();
 }
}

Time Complexity: O(n)

Space Complexity: O(n)

Enjoyed this article?

Share it with someone who'd find it useful.

ShareWhatsAppPost on X

sumitc91

Published on 3 October 2020 · 1 min read · 282 words

Part of AskGif Blog · coding

You might also like