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)
相关推荐
城管不管7 分钟前
前后端远程协作
java
青云计划11 分钟前
Feed流
java·后端·spring
小许同学记录成长12 分钟前
三维重建技术文档
算法·无人机
java1234_小锋24 分钟前
String、StringBuilder、StringBuffer的区别?
java·开发语言
星原望野25 分钟前
JAVA集合:List、Set和Map
java·开发语言·list·set·map·集合
2601_9577875841 分钟前
星链引擎矩阵系统:插件化多平台 API 网关与账号级隔离技术实践
java·矩阵·插件化架构
多敲代码防脱发1 小时前
Spring进阶(容器实现)
java·开发语言·后端·spring
星辰_mya2 小时前
彩云之上——[特殊字符]的架构师
java·后端·微服务·面试·架构
小O的算法实验室2 小时前
2026年ASOC,基于多目标优化去噪双存档进化算法+路径规划,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
phltxy2 小时前
Redis 主从复制
java·数据库·redis