题解 | #点击消除#

点击消除

https://www.nowcoder.com/practice/8d3643ec29654cf8908b5cf3a0479fd5

#include <iostream>
#include <iterator>
#include <memory>
using namespace std;
#include<stack>
#include<algorithm>

int main() {
    // int a, b;
    // while (cin >> a >> b) { // 注意 while 处理多个 case
    //     cout << a + b << endl;
    // }
    string a;
    cin >> a;
    stack<char> sta;
    for (int i = 0; i < a.size(); i++) //遍历字符串
    { 
        if (sta.empty()) 
        {
            sta.push(a[i]); //空栈下进栈
        } 
        else //非空栈
        { 
            if (sta.top() == a[i]) //栈顶与当前字符一样
            { 
                sta.pop();  //出栈
            } 
            else sta.push(a[i]); //不一样就进栈
        }
    }
    if (sta.empty()) cout << 0; //最终空栈输出0
    else 
    {
        string str;
        while (!sta.empty()) //出栈赋给字符串str
        { 
            str += sta.top();
            sta.pop();
        }
        reverse(str.begin(), str.end()); //反转字符串
        cout << str;
    }
    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

有工作后先养猫:太好了,是超时空战警,我们有救了😋
点赞 评论 收藏
分享
我在朝九晚六双休的联想等你:如果我是你,身体素质好我会去参军,然后走士兵计划考研211只需要200多分。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务