/* * @lc app=leetcode id=1021 lang=rust * * [1021] Remove Outermost Parentheses * * https://leetcode.com/problems/remove-outermost-parentheses/description/ * * algorithms * Easy (76.58%) * Total Accepted: 69.1K * Total Submissions: 90.2K * Testcase Example: '"(()())(())"' * * 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 * * * * * * * */ impl Solution { pub fn remove_outer_parentheses(s: String) -> String { let mut res:String = "".into(); let mut cter = 0; for c in s.chars(){ if c == ')' { cter -= 1;} if cter > 0 { res.push(c);} if c == '(' { cter += 1; } } res } } // pub structSolution;