栈-1047.删除字符串中的所有相邻重复项-力扣(LeetCode)

一、题目解析

1、反复执行重复项删除操作

2、s仅由小写英文字母组成

二、算法原理

该题并不难,难的是能不能想到用栈这个数据结构解题

解法:栈模拟

横着看起来不好理解,我们把它竖起来,是不是和消消乐很类似,两两消去,上的会往下掉;这样的结构很难不往栈方面去想

但是我们没有必要使用库里的栈,第一点,栈中存储的是字符,我们得到最终结果之前,还需要把栈内的元素还原成字符串;第二点在我们早期学习时,或许不少读者都用c实现过链表、栈和队列,这样简单的数据结构,简单的栈是可以用数组模拟的,由于需要返回string,所以这里可以使用string来模拟栈的功能

当即将加入ret的元素与ret末尾元素相同,根据重复项删除,我们ret.pop_back(),进行尾删操作

有需要的可以自行查询相关语法细节

链接:cplusplus.com - The C++ Resources Network

三、代码示例

cpp 复制代码
class Solution {
public:
    string removeDuplicates(string s)
    {
        string ret;
        for(int i = 0;i<s.size();i++)
        {
            if(ret.size()>0&&ret[ret.size()-1] == s[i])
                ret.pop_back();
            else ret += s[i];
        }
        return ret;
    }
};

看到最后,如果对您有所帮助,还请点赞、收藏和关注一键三连,在未来还会继续带来优秀的内容,感谢观看,我们下期再见!

相关推荐
by209992 小时前
vector 的模拟实现:扩容与边界的详细阐述(下)
c++·经验分享·vector·动态数组
余额瞒着我当琳5 小时前
红黑树的实现--红黑树的概念、规则、效率、结构、旋转、查找、验证
数据结构·c++·算法
青少儿编程课堂5 小时前
AC自动机多模式串匹配精讲:校园关键词巡检实战解析
c++·python·算法·bfs·信息学竞赛
longlongzihan6 小时前
LeetCode 5. 最长回文子串:从暴力匹配到中心扩展的思维演进
c++·算法·leetcode
苦瓜打怪兽6 小时前
leetcode 热题100(11. 盛最多水的容器)
python·算法·leetcode
多弗朗皮卡丘6 小时前
C++继承
c++·继承
汉克老师7 小时前
GESP2026年9月认证C++七级( 第三部分编程题(2、括号序列))精讲
c++·gesp·小学生·学c++编程
jimy19 小时前
虚函数vtable,链接时看到构造函数,linker把符号地址写入vtable(三)
开发语言·c++
潼心1412o10 小时前
C++初阶(长期更新)第9讲:string(上)
开发语言·c++
朝朝辞暮i10 小时前
C++ 第 39 章: 阶段性总复习——类、对象、构造、继承、this、指针与智能指针
开发语言·c++·算法·ros2