清除字符串中的括号,例:输入"1()2(3))4" 输出"1234"
// 利用双指针, 第一步先遍历一遍统计字符串中的数字index2
// 让index1指向字符串的最后一个元素, 如果当前index1的元素为数字
// 则让index2 与 index1 所在的元素相交换 此时:index1不动,index2--
// 如果不是数字则只需将index1--
// 该算法会打乱数字在原字符串的序列
public String clearBracket(StringBuilder str) {
if (str == null)
return "";
int index1 = str.length() - 1;
int index2 = -1;
for (int i=0; i<str.length(); i++) {
if (Character.isDigit(str.charAt(i)))
index2++;
}
int tempIndex = index2;
while (index1 >= 0 && index2 >= 0) {
if (Character.isDigit(str.charAt(index1))) {
char tempChar = str.charAt(index2);
str.setCharAt(index2--, str.charAt(index1));
str.setCharAt(index1, tempChar);
} else {
index1--;
}
}
return str.substring(0, tempIndex+1);
}