【小米0923】二、循环去除连续重复元素 <栈>

【小米0923】二、循环去除连续重复元素

给出一个由小写字母组成的字符串,找出两个相邻且相同的字母,删除。
在字符上反复执行上述操作,直到无法继续删除。输出最终字符串。
提示
1 <= 输入字符串长度 <=20000
输入字母仅由小写字母组成
输入

dbbdut

输出

ut

题解

使用栈

import java.util.Scanner;
import java.util.Stack;

public class B {
    public static void main(String[] args) {
        Stack<Character> stack = new Stack<>();
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();

        for (int i = 0; i < str.length(); i++) {
            // 栈空
            if (stack.empty()) {
                stack.push(str.charAt(i));
            }
            // 栈非空
            else {
                // 栈顶元素和当前元素比,一样就消掉
                if (stack.peek() == str.charAt(i)) {
                    stack.pop();
                }
                // 栈顶元素和当前元素比,不一样就入栈
                else {
                    stack.push(str.charAt(i));
                }
            }
        }

        for (Character ch : stack) {
            System.out.print(ch);
        }
    }
}

你可能感兴趣的:(力扣及OJ,#,栈,队列,单调栈,java,数据结构,算法)