思路分析:
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);
}
}



京公网安备 11010502036488号