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)
相关推荐
斯汤雷16 分钟前
Matlab绘图案例,设置图片大小,坐标轴比例为黄金比
数据库·人工智能·算法·matlab·信息可视化
腥臭腐朽的日子熠熠生辉21 分钟前
解决maven失效问题(现象:maven中只有jdk的工具包,没有springboot的包)
java·spring boot·maven
ejinxian23 分钟前
Spring AI Alibaba 快速开发生成式 Java AI 应用
java·人工智能·spring
杉之28 分钟前
SpringBlade 数据库字段的自动填充
java·笔记·学习·spring·tomcat
云 无 心 以 出 岫1 小时前
贪心算法QwQ
数据结构·c++·算法·贪心算法
圈圈编码1 小时前
Spring Task 定时任务
java·前端·spring
俏布斯1 小时前
算法日常记录
java·算法·leetcode
独好紫罗兰1 小时前
洛谷题单3-P5719 【深基4.例3】分类平均-python-流程图重构
开发语言·python·算法
27669582921 小时前
美团民宿 mtgsig 小程序 mtgsig1.2 分析
java·python·小程序·美团·mtgsig·mtgsig1.2·美团民宿
爱的叹息1 小时前
Java 连接 Redis 的驱动(Jedis、Lettuce、Redisson、Spring Data Redis)分类及对比
java·redis·spring