Easily Understandable JAVA Stack & Without Stack sol.
Intuition\n Describe your first thoughts on how to solve this problem. \n\n# Approach\n Describe your approach to solving the problem. \n\n# Complexity\n- Time 
# Intuition\n<!-- Describe your first thoughts on how to solve this problem. -->\n\n# Approach\n<!-- Describe your approach to solving the problem. -->\n\n# Complexity\n- Time complexity:\n<!-- Add your time complexity here, e.g. $$O(n)$$ -->\n\n- Space complexity:\n<!-- Add your space complexity here, e.g. $$O(n)$$ -->\n\n# Code\n```\nclass Solution {\n    public String removeOuterParentheses(String s) {\n         StringBuilder sb = new StringBuilder();\n\n//               STACK SOLUTION\n\n        //  Stack<Character> st = new Stack<>();\n        //  for(int i=0;i<s.length();i++){\n        //      char ch = s.charAt(i);\n        //      if(ch == \'(\'){\n        //          if(!st.isEmpty()){\n        //              sb.append(ch);\n        //          }\n        //          st.push(ch);                  \n        //      }else{\n        //          st.pop();\n        //          if(!st.isEmpty()){\n        //              sb.append(ch);\n        //          }\n        //      }\n        //  }\n        // return sb.toString();\n             \n         int con=0;\n         for(char c:s.toCharArray()){\n             if(c==\'(\' && con++>0 )sb.append(c);\n             if(c==\')\' && con-->1 )sb.append(c);\n         }\n         return sb.toString();\n    }\n}\n/*  \n-->Solve without using stack:\nKeep a counter c = 0\nIncrement when ( found and decrement when ) found\nif c = 1 means ( is outer most, don\'t add it to answer\nif c = 0 means ) is outer most, don\'t add it to answer\nelse keep adding parenthesis to answer\n*/\n```
['Java']