LeetCode 1021. Remove Outermost Parentheses
考点 | 难度 |
---|---|
String | Easy |
题目
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
.
思路
去掉最左边的(
和最右边的)
。opened++
先比较再加一,就算条件不满足也会加一。
答案
public String removeOuterParentheses(String S) {
StringBuilder s = new StringBuilder();
int opened = 0;
for (char c : S.toCharArray()) {
if (c == '(' && opened++ > 0) s.append(c);
if (c == ')' && opened-- > 1) s.append(c);
}
return s.toString();
}