采用压栈和弹栈的方法,代码如下:
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
char[] ch = s.toCharArray(); //将字符串转化为char型数组,方便作为形参传入solve方法
solve(ch);
}
public static void solve(char[] ch) {
Stack<Character> st = new Stack<Character>();
for(int i = 0; i < ch.length; i++){
if(st.isEmpty() || ch[i] != st.peek()) //若栈不为空且ch[i]和栈顶元素不一样,ch[i]入栈
st.push(ch[i]);
else if(ch[i] == st.peek()) // 当ch[i]等于栈顶元素时,栈顶元素出栈
st.pop();
}
if(st.isEmpty())
System.out.println("0"); //若栈为空,直接输出0
else {
Stack<Character> st2 = new Stack<Character>(); //栈st不为空时,创建栈st2,让元素能按在字符串中的顺序输出
while(!st.isEmpty())
st2.push(st.pop());
while(!st2.isEmpty())
System.out.print(st2.pop());
}
}
}