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)
相关推荐
范特西_8 分钟前
交错字符串-二维dp
算法·动态规划
安然~~~14 分钟前
单例模式的理解
java·单例模式
我会冲击波22 分钟前
Easy Naming for IDEA:从命名到注释,您的编码效率助推器
java·intellij idea
是阿建吖!22 分钟前
【递归、搜索与回溯算法】穷举、暴搜、深搜、回溯、剪枝
算法·bfs·剪枝
池以遇23 分钟前
云原生高级---TOMCAT
java·tomcat
菜鸟5555540 分钟前
河南萌新联赛2025第五场 - 信息工程大学
c++·算法·思维·河南萌新联赛
IT毕设实战小研1 小时前
Java毕业设计选题推荐 |基于SpringBoot的水产养殖管理系统 智能水产养殖监测系统 水产养殖小程序
java·开发语言·vue.js·spring boot·毕业设计·课程设计
小小深1 小时前
Spring进阶(八股篇)
java·spring boot·spring
京东云开发者1 小时前
虚引用GC耗时分析优化(由 1.2 降低至 0.1 秒)
java
Java中文社群1 小时前
求职必备!常用拖Offer话术总结
java·后端·面试