当前位置: 首页 > article >正文

删除字符串中所有相邻重复项

本文参考代码随想录

给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。
在 S 上反复执行重复项删除操作,直到无法继续删除。
在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。

利用栈存放之前遍历过的元素,若当前元素和栈顶元素一致则删除。最后弹出栈中元素并进行倒序

class Solution {
public:
    string removeDuplicates(string s) {
        stack<char> st;
        for(char ch : s){
            if(st.empty() || ch != st.top()){
                st.push(ch);
            }
            else{
                st.pop();
            }
        }
        string result = "";
        while(!st.empty()){
            result += st.top();
            st.pop();
        }
        reverse(result.begin(), result.end());
        return result;
    }
};

时间复杂度、空间复杂度均为O(n)


http://www.kler.cn/a/288074.html

相关文章:

  • windows@多系统引导名字修改@默认引导系统修改@bcdedit配置
  • 跳房子(弱化版)
  • Python中的HTML
  • 数据产品:深度探索与案例剖析
  • 使用Python实现对接Hadoop集群(通过Hive)并提供API接口
  • 【PHP】ThinkPHP基础
  • 微服务架构
  • 公网信息泄露监测(网盘、暗网、搜索引擎、文档平台)思路分享
  • 深入理解 Java 中的 Collections 工具类
  • Fabric.js Canvas:核心配置与选项解析
  • Byte Pair Encoding(BPE)算法原理以及其python实现
  • 大语言模型算力优化策略:基于并行化技术的算力共享平台研究
  • BugKu练习记录:你喜欢下棋吗
  • 常见的锁策略
  • C++可变参数函数模板
  • Java基于微信小程序的美食推荐小程序,附源码
  • Extended Line Description in Halcon and OpenCV
  • 每天一个数据分析题(五百一十四)- 决策树算法
  • HTML静态网页成品作业(HTML+CSS+JS)——中华美食八大菜系介绍(1个页面)
  • git switch和git checkout
  • Vue(十一)默认插槽、具名插槽、作用域插槽
  • Java面试自我介绍
  • Leetcode面试经典150题-239.滑动窗口最大值
  • Java集合记录
  • 苍穹初始-云与应用设计
  • 关于STC-ISP软件选项“下次下载用户程序时擦除用户EEPROM区”的质疑