删除最外层的括号
这个题 如果想留下最内层的括号对 很简单
public static String removeOuterParentheses(String S) {
String string = "";
for (int i = 0; i < S.length(); i++) {
if (S.charAt(i) == '(' && S.charAt(i + 1) == ')') {
string = string + S.charAt(i) + S.charAt(i + 1);
i++;
}
}
return string;
}
但是题意只是处理掉外层括号
用单个变量 代替了栈,真是厉害。
public static String removeOuterParentheses(String S) {
StringBuilder sb = new StringBuilder();
int le = 0;
for(char c:S.toCharArray()){
if(c==')') --le;
if(le>=1) sb.append(c);
if(c=='(') ++le;
}
return sb.toString();
}
这里为什么不用 String 而是用一个StringBuilder ,不加锁可以是可以变的,并非final,如果是使用String会浪费大量时间和内存去创建final对象。