题解 | #点击消除#
点击消除
https://www.nowcoder.com/practice/8d3643ec29654cf8908b5cf3a0479fd5
新手拙见:
思路:1.将字符串切割分开。
2.准备一个辅助栈,当栈为空或者字符串切割后的元素不等于栈顶,则进栈。
3.当元素等于栈顶时不进栈,且弹出栈顶元素,循环往复直到字符串切割完。
4.辅助栈为空则返回字符串“0”,否则返回栈中元素组成的字符串。
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String str = sc.next();
System.out.println(transfer(str));
}
public static String transfer(String str){
if(str.length()==0){
return "0";
}
Stack<Character> stack = new Stack<>();
for(int i = 0;i<=str.length()-1;i++){
if(stack.isEmpty()||stack.peek()!=str.charAt(i)){
stack.push(str.charAt(i));
}else{
stack.pop();
}
}
StringBuilder sb = new StringBuilder();
while(!stack.isEmpty()){
sb.append(stack.pop());
}
sb.reverse();
return sb.length()==0?"0":sb.toString();
}
}