题解 | #点击消除#
点击消除
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(); } }