출처 : https://leetcode.com/problems/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 = 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
.
class Solution {
public String removeOuterParentheses(String s) {
Stack<Character> stack = new Stack<>();
int count = -1;
ArrayList<Integer> arrayList = new ArrayList<>();
for (int i = 0; i < s.length(); i++) {
count++;
if (s.charAt(i) == '(') {
stack.push(s.charAt(i));
} else {
stack.pop();
if (stack.isEmpty()) arrayList.add(count);
}
}
String answer = "";
for (int a = 0; a < arrayList.size(); a++) {
if (a == 0) answer += s.substring(1, arrayList.get(a));
else answer += s.substring(arrayList.get(a - 1) + 2, arrayList.get(a));
}
return answer;
}
}