力扣题目链接:1047. 删除字符串中的所有相邻重复项 - 力扣(LeetCode)
分析:删除相邻的重复项,首先想到数据结构栈,它是一种先进后出的数据结构,将a,b依次入栈,遍历字符串中的元素,碰见相同的就出栈,循环往复,如果栈中还有元素,证明有不匹配的元素,如果最后栈为空,证明所有元素都能匹配。
最后要注意,由于栈中的元素是先进后出的,如果栈中还有元素,最后出栈元素的位置会反转,必须将反转的元素复原回来。
实现代码如下:
class Solution {
public:
string removeDuplicates(string s)
{
//定义一个栈
stack<char> sta;
for(char s1 : s)
{
if(sta.empty() || s1 != sta.top())
{
sta.push(s1);
}
else{
sta.pop();
}
}
string result = "";
//将栈中元素取出
while(!sta.empty())
{
//获取栈顶元素的值,不会弹出元素
result += sta.top();
//弹出栈顶元素
sta.pop();
}
//反转字符串
reverse(result.begin(),result.end());
return result;
}
};
执行效率: