Leetcode——1047. 删除字符串中的所有相邻重复项

题解一

思路

和上一题区别不大,就是在进栈之前和栈顶元素进行比较,相同就弹出,不同就进栈,最后对栈内的元素进行输出。

代码

class Solution {
    public String removeDuplicates(String s) {
        Deque stack = new ArrayDeque<>();
        for(int i = 0; i < s.length(); i++){
            char temp = s.charAt(i);
            if (!stack.isEmpty() && temp == stack.peek()){
                stack.pop();
            }
            else{
                stack.push(temp);
            } 
        }
        String result = "";
        while(!stack.isEmpty()){
            result = stack.pop() + result;
        }
        return result;

    }
}

 总结

第一点就是要在peek()之前检查栈内是否还有元素,空栈进行peek()操作会报错。

不知道stack怎么返回字符串,以为会有什么方法,结果就是一个简单的遍历。

进行遍历时,要注意栈先进后出的机制,注意不要将字符串反转。

你可能感兴趣的:(算法)