力扣——删除字符串所有相邻重复项

题目解析

题目链接
题目截图
在这里插入图片描述

我们来看一下这个题目这个题目其实跟我们的消消乐一样,首先就是给你一个字符串然后呢两个相邻的字符串如果相等的话就消除,但是大家注意消除后可能原本相同但是不相邻的元素会变得相邻因此我们要处理好这种情况那么该怎么办呢?请看算法解析。

算法原理

在这里插入图片描述
以此样列为例我们来模拟一个栈结构

首先第一步

在这里插入图片描述
将第一个元素a放入

第二步

第二步直接跳过跟上面类似我们直接来到第三步
在这里插入图片描述

在这里我们发现此时栈顶的元素和接下来要放入的元素相同了因此此时我们可以让栈顶元素出栈并且接下来要放入的元素不放入就达到了消除的效果我们来看一下

第三步

在这里插入图片描述

然后我们发现接下来要放入的元素又跟此时的栈顶元素相同因此重复上面的步骤

第四步

在这里插入图片描述
然后我们发现此时栈为空那么接下来就需要我们进行继续入栈了

第五步和第六步

在这里插入图片描述
此时栈中的元素就是我们的答案因此我们只需要用一个string模拟一下栈就可以了代码如下

代码解析

class Solution {
public:
    string removeDuplicates(string s) {
        string ans;
        for(int i=0;i<s.size();i++){
            if(ans.empty()){
                ans.push_back(s[i]);
            }else if(ans[ans.size()-1]==s[i]){
                ans.pop_back();
                continue;
            }else{
                ans.push_back(s[i]);
            }
        }
        return ans;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值