sdut oj 数据结构实验之栈与队列九:行编辑器

该博客主要讨论了一个C++程序,该程序使用栈来处理包含特殊字符'#'和'@'的字符串输入。当遇到'#'时,程序会忽略后续字符直到遇到非'#'字符;遇到'@'时,则清除栈内所有元素。程序逐行读取输入,对每行进行处理,并将结果逆序输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 AC

第一次wa是因为没读懂题目说的行首输入#的意思,如果行首输入了#直接忽略,而不入栈

#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<stack>
using namespace std;
int s[100005];

int main()
{
    string p;
    while(getline(cin,p)){
        stack<char> s;
        char p1[260];
        for(int i=0;i<p.length();i++){
            if(p[i]=='#'){
                if(!s.empty()) s.pop();
            }
            else if(p[i]=='@'){
                while(!s.empty())
                    s.pop();
            }
            else s.push(p[i]);
        }
        int n=0;
        while(!s.empty()){
            p1[n++]=s.top();
            s.pop();
        }
        p1[n]='\0';
        for(int i=n-1;i>=0;i--){
            cout <<p1[i];
        }
        cout <<endl;
    }
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值