思路分析:
1.先将输入的字串转成字符数组
2.创建一个栈
3.遍历字符数组
4.如果栈为空,或者当前字符和栈顶不相等,消除不了,将字符入栈
5.如果当前字符和栈顶相等,则将栈顶出栈
6.然后继续遍历下一个,直到遍历完数组
7.遍历完后,判断栈是否为空,如果为空输出0
8.将栈中的元素全部弹出组成一个字符串并输出,注意栈的弹出顺序和我们要输出的是相反的,所以我们可以使res=stack.pop()+res,这样就是我们要的结果啦
import java.util.Scanner; import java.util.Stack; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 //获取输入的字符串 String str=in.next(); solve(str); } public static void solve(String str){ //将字符串编程字符数组 char[] chars=str.toCharArray(); //创建一个栈 Stack<String> stack=new Stack<>(); int i=0;//字符数组的索引 String cha; while(i<chars.length){ cha=chars[i]+""; if(stack.isEmpty() ||!(cha.equals(stack.peek()))){ //如果栈为空或去栈顶元素不相等,入栈 stack.push(cha); }else{ //将栈顶出栈 stack.pop(); } i++; } //判断栈是否为空,为空输出0 if(stack.isEmpty()){ System.out.println(0); return; } String res=""; while(!stack.isEmpty()){ res=stack.pop()+res; } System.out.println(res); } }