问题标题: 酷町堂:5093咋错了(栈方法)

0
0
已解决
高杨
高杨
资深守护
资深守护

0分代码: 

#include <bits/stdc++.h>
#include <cstring>
#include <iostream>
#include <vector>
#include <queue>
#include <string>
#include <algorithm>
#include <stack>
using namespace std;
stack<char> a;
string s;
int main()
{
    a.push('1');
    cin>>s;
    for(int i=0;i<s.size();i++)
    {
        if(s[i]!=a.top())
        {
            a.push(s[i]);
        }
        else
        {
            a.pop();
        }
    }
    for(int i=a.size()-1;i>0;i--)
    {
        cout<<a.top();
        a.pop();
    }
    return 0;
}

5093   删除字符串中的所有相邻重复项经验值:0

题目描述 Description

给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。

在 S 上反复执行重复项删除操作,直到无法继续删除。

在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。

输入描述 Input Description

输出描述 Output Description

样例输入 Sample Input

abbaca

样例输出 Sample Output

ca

数据范围及提示 Data Size & Hint

样例解释:
例如,在 “abbaca” 中,我们可以删除 “bb” 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 “aaca”,其中又只有 “aa” 可以执行重复项删除操作,所以最后的字符串为 “ca”。


0
已采纳
贾志骜
贾志骜
新手光能
新手光能

咳咳,在不,while循环不是更好?这个能用吗

贾志骜在2020-08-07 12:00:37追加了内容

这???什么鬼,a.push(“1”)??

0
王子翔
王子翔
新手光能
新手光能

我知道点思路,要erase的,不然他会重复计算,然后会影响间隔重复的问题

0
王子健
王子健
初级天翼
初级天翼

这道题我还没有思路,但大概就是遍历遇到重复就删除,然后!s.empty就删

我要回答