import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
//思路:使用栈 如果重复弹出栈顶元素,否则把数据推入到栈中
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str=sc.nextLine(); //接受字符串遇到回车键(\r)结束输入
Stack<Character> stk=new Stack<Character>(); //辅助栈
for(int i=0;i<str.length();i++){
if(stk.isEmpty() || str.charAt(i)!=stk.peek()){ //栈为空或者不是栈顶元素相同的可以入栈
stk.push(str.charAt(i)); //入栈
}else{
stk.pop(); //不满足就移除栈中的一个元素(默认最后一个元素[-1]),并且返回该元素的值
}
}
String s="";
for(char ch:stk){ //遍历栈
s+=ch;
}
if(s.isEmpty()){ //如果是空就输出0
System.out.println(0);
}
System.out.println(s);
}
}
本题总结
1、empty()和 isEmpty()的区别:
字符串中只有isEmpty()方法,而栈中两种方法均可以实现。
2、遍历栈中元素
for(char ch:stk)
3、char与String
char表示字符,定义时用单引号,只能存储一个字符,如char c=’x’;
String表示字符串,定义时用双引号,可以存储一个或多个字符,如String name=”ikun”;
4 、sc.next()与sc.nextLine()
sc.next()输入法是不能接收:空格键(\s)、Tab键(\t)或Enter键(\r)字符
sc.nextLine是不能接收回车键的(\r),即一个sc.nextLine只接收一行字符串不含回车键;

京公网安备 11010502036488号