1047. 删除字符串中的所有相邻重复项 - 力扣(LeetCode)
对于字符串中字符的匹配或者删除等问题,通常会用到栈这个数据结构,要保持这样一个思路。
对于这道题,可以遍历字符串,用栈存储,一旦遇到和栈顶相同的字符,就出栈,最后栈中的字符串就是最后的结果,注意出栈顺序是相反的,需要将栈中最后的结果相反遍历。
优化的方法是,可以将字符串当成一个逻辑上的栈来使用,而不必额外申请另外的空间。
参考代码:
class Solution {
public:
string removeDuplicates(string s) {
string ans;//保存结果,模拟栈
for(int i = 0; i < s.size(); ++i){//遍历所有字符串
if(ans.empty() || ans.back() != s[i])//不是相等的字符,加入字符串中
ans.push_back(s[i]);
else //相等的相邻字符,出栈
ans.pop_back();
}
return ans;
}
};