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)
相关推荐
清木铎15 小时前
leetcode_day10_筑基期_《绝境求生》
算法
j_jiajia15 小时前
(一)人工智能算法之监督学习——KNN
人工智能·学习·算法
4***172715 小时前
Spring Boot中Tomcat配置
java
源代码•宸15 小时前
Golang语法进阶(协程池、反射)
开发语言·经验分享·后端·算法·golang·反射·协程池
Chan1616 小时前
场景题:CPU 100% 问题怎么排查?
java·数据库·redis·后端·spring
qq_3363139316 小时前
java基础-IO流(网络爬虫/工具包生成假数据)
java·爬虫·php
桦说编程16 小时前
滑动窗口限流器的演进之路:从调度器实现到 Packed CAS
java·后端·性能优化
开开心心_Every17 小时前
安卓后台录像APP:息屏录存片段,行车用
java·服务器·前端·学习·eclipse·edge·powerpoint
初次攀爬者17 小时前
SpringBoot 整合 JWT + Redis 实现登录鉴权
java·redis·后端