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)
相关推荐
酒酿泡芙1217几秒前
前端力扣刷题 | 6:hot100之 矩阵
前端·leetcode·矩阵
鲤籽鲲9 分钟前
C# 中 [MethodImpl(MethodImplOptions.Synchronized)] 的使用详解
java·开发语言·c#
逆风局?23 分钟前
Java基础——分层解耦——IOC和DI入门
java·开发语言
JackieZhang.26 分钟前
求水仙花数,提取算好,打表法。或者暴力解出来。
数据结构·算法
ybq1951334543143 分钟前
javaEE-8.JVM(八股文系列)
java·jvm·java-ee
LUCIAZZZ1 小时前
Hot100之贪心算法
数据结构·算法·leetcode·贪心算法
h^hh1 小时前
堆的模拟实现(详解)c++
数据结构·c++·算法
飞翔的佩奇1 小时前
Java项目: 基于SpringBoot+mybatis+maven+mysql实现的疾病防控综合管理系统(含源码+数据库+毕业论文)
java·数据库·spring boot·mysql·spring·毕业设计·疾病防控
power-辰南1 小时前
技术架构师成长路线(2025版)
java·架构师·学习路线·技术专家
tt5555555555551 小时前
每日一题——小根堆实现堆排序算法
c语言·数据结构·算法·面试·排序算法·八股文