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

题目

思路

这是一道easy题,很明显要用栈。

有三种情况:

  1. 如果栈空,则直接入栈。

  2. 如果栈顶元素和当前元素不同则入栈。

  3. 如果栈顶元素和当前元素相同则栈顶元素出栈

最后再将栈中的元素依次pop,添加到一个字符串中就行。

代码

java 复制代码
import java.util.Deque;
import java.util.LinkedList;

//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public String removeDuplicates(String s) {
        Deque<Character> deque = new LinkedList<>();
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            //如果栈空,则直接入栈
            //如果栈顶元素和当前元素不同则入栈
            if (deque.isEmpty() || deque.peek() != c) {
                deque.push(c);
            } else {
                //如果栈顶元素和当前元素相同则栈顶元素出栈
                deque.pop();
            }
        }
        //将栈中元素添加到字符串中
        StringBuilder sb = new StringBuilder();
        while (!deque.isEmpty()) {
            sb.append(deque.pop());
        }
        //先反转再转成字符串
        return sb.reverse().toString();

    }
}
//leetcode submit region end(Prohibit modification and deletion)
相关推荐
wayz114 分钟前
Day 12:支持向量机(SVM)原理与实践
算法·机器学习·支持向量机
桌面运维家4 分钟前
vDisk虚拟磁盘隐藏指定系统操作指南
java·开发语言
Lyyaoo.7 分钟前
JWT 令牌(待更新)
java·前端·javascript
郝学胜-神的一滴9 分钟前
干货版《算法导论》 01:从问题定义到正确性证明
数据结构·人工智能·深度学习·神经网络·算法·机器学习
大肥羊学校懒羊羊13 分钟前
特殊乘法的计算
数据结构·c++·算法
IronMurphy13 分钟前
【算法四十一】763. 划分字母区间
算法
cpp_250118 分钟前
P2430 严酷的训练
数据结构·c++·算法·动态规划·洛谷·背包dp
jiayong2319 分钟前
第 40 课:任务详情抽屉里的编辑 / 删除联动强化
java·开发语言·前端·javascript·vue.js·学习
河阿里20 分钟前
Java八股:面试高频50
java·面试
Rabitebla23 分钟前
【数据结构】实现通讯录:基于C语言动态顺序表
c语言·开发语言·数据结构·算法