力扣原题链接 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。
测试代码:
#include<iostream>
#include<algorithm>
#include<stack>
using namespace std;
class Solution {
public:
string removeDuplicates(string S)
{
stack <char >st;
for(char s:S)
{
if(st.empty() || s!=st.top())
{
st.push(s);
}
else
st.pop();
}
string resutl=" ";
while(!st.empty())
{
resutl+=st.top();
st.pop();
}
reverse(resutl.begin(),resutl.end());
return resutl;
}
};
int main()
{
Solution s;
cout <<s.removeDuplicates("abccb")<<endl;
return 0;
}
其他:在下面的 C++ 代码中,由于 std::string std::string 类本身就提供了类似「入栈」和「出栈」的接口,因此我们直接将需要被返回的字符串作为栈即可
|