题目
字符串如果包含$,则将 $ 前的字符剔除,最后保留剔除后的字符串,输出其长度
比如
a
b
c
abc
abcd
输出3,因为剔除后的字符串为abd
思路
利用String Builder对字符串处理
或者利用Stack对字符串处理
public static int strBackSpace(String str){
// 利用stack的性质处理
char[] charArray = str.toCharArray();
List<Character> list = new ArrayList<>();
Stack<Character> stack = new Stack<>();
for (int i = 1; i < charArray.length; i++) {
if(charArray[i] == '$'){
if(!stack.isEmpty()){
stack.pop();
}
}else{
stack.push(charArray[i]);
}
}
return stack.size();
}
public static int strBackSpace2(String str){
// 利用StringBuilder处理
// 如果不为$,那么就将字符添加到字符串中
// 如果为$,那么就删除当前字符串中最后一个字符
char[] charArray = str.toCharArray();
StringBuilder sb = new StringBuilder();
for (int i = 1; i < charArray.length; i++) {
if(charArray[i] == '$'){
if(sb.length()>0){
// 删除sb中最后一个字符
sb.deleteCharAt(sb.length()-1);
}
}else{
sb.append(charArray[i]);
}
}
return sb.length();
}