题目解析
题目链接
题目截图
我们来看一下这个题目这个题目其实跟我们的消消乐一样,首先就是给你一个字符串然后呢两个相邻的字符串如果相等的话就消除,但是大家注意消除后可能原本相同但是不相邻的元素会变得相邻因此我们要处理好这种情况那么该怎么办呢?请看算法解析。
算法原理
以此样列为例我们来模拟一个栈结构
首先第一步
将第一个元素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;
}
};