问题 D: 数据结构练习 -- 栈的操作

2023-11-02

题目描述

对输入整数序列1 2 3 ..执行一组栈操作,输出操作的出栈序列。

输入

每行是一个测试用例,表示一个操作序列。操作序列由P和Q两个符号组成,P表示入栈,Q表示出栈。每个操作序列长度不超过1000。

输出

对每个操作序列,输出出栈序列,若操作序列有错误,如栈空时执行出栈操作,输出error。

样例输入 复制

PQPPQQPPPQPQ
PPPPQQP
PP
PQQPP
PPQQ

样例输出 复制

1 3 2 6 7 
4 3 

1 error
2 1 

提示

注意,Sample Input中第三行没有出栈操作,因此输出一个空行。

先来个循环,判断输入的字符串是Q还是P,若是P就将j加1然后入栈,若是Q就将栈顶元素出栈,注意判断当栈为空的时候再出栈就输出error!

#include<bits/stdc++.h>
using namespace std;
int main()
{
    char s[1000];
    while(cin>>s)
    {
        int n=strlen(s),j=0;
        stack<int>num;
        for(int i=0;i<n;i++)
        {
            if(s[i]=='P')
            {
                j++;
                num.push(j);
            }
            if(s[i]=='Q')
            {
                if(num.size())
                {
                    cout<<num.top()<<" ";
                    num.pop();
                }
                else
                {
                    cout<<"error";
                    break;
                }
            }
        }
        cout<<endl;
    }
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

问题 D: 数据结构练习 -- 栈的操作 的相关文章

随机推荐

  • 为什么一些机器学习模型需要对数据进行归一化?

    为什么一些机器学习模型需要对数据进行归一化 http www cnblogs com LBSer p 4440590 html 机器学习模型被互联网行业广泛应用 如排序 参见 排序学习实践 推荐 反作弊 定位 参见 基于朴素贝叶斯的定位算法
  • EtherCAT总线通信Freerun、SM、DC三种同步模式分析

    EtherCAT总线三种同步模式分析 一 分布式时钟作用 使所有EtherCAT设备使用相同的系统时间 从而控制各设备任务的同步执行 二 名词解析 1 现场总线高速数据传递 即主站周期的向从站发送输出信息并周期地读取从站的输入信息 2 Ou
  • docker镜像与容器操作

    主要参考了docker从入门到实践 遇到自己不会的又补充了一些内容 一 镜像操作 1 获取镜像 docker pull 选项 Docker Registry 地址 端口号 仓库名 标签 Docker Registry 地址 lt 域名 IP
  • 樱花飘落,3D效果,抖音热门樱花飘落html

    樱花飘落 3D效果 抖音热门樱花飘落html 总结 代码如下 示例
  • [Android开发] 点击小图查看大图的功能、图片浏览器,聊天页面、朋友圈、微博、广场页面的查看大图功能,浏览大图功能,拖动关闭大图页面,完美的甚至完胜微信的过渡动画

    一 简介 属于你的侵入性低的大图查看器 完美的甚至完胜微信的过渡动画 同样支持视频 另外您可以自定义加载图片的内核 例如Glide Picasso或其他的 github地址 https github com FlyJingFish Open
  • Microsoft Minecraft产品线梳理

    目录 前言 1 Minecraft游戏本体 2 Minecraft Education Edition 3 Minecraft Marketplace 4 Minecraft Realms 5 Minecraft Dungeons
  • linux下线程使用

    什么是线程 线程 是进程内部的一个控制序列 即使不使用线程 进程内部也有一个执行线程 为什么要使用多线程 使用fork创建进程以执行新的任务 该方式的代价很高 多个进程间不会直接共享内存 线程是进程的基本执行单元 一个进程的所有任务都在线程
  • conda配置清华源

    conda配置清华源 问题描述 在Anaconda下准备下载东西的时候 出现了这样的报错或者出现下载速度极其慢 原因 因为默认下载东西的链接是国外的镜像 存在一些问题 因此将源改成国内的镜像即可 解决方案 1 使用清华的镜像链接 用清华镜像
  • Java 随机产生四位验证码

    import java util Random public class RandGenDemo public static void main String args 静态的方法不用new 直接对象 方法名 System out prin
  • linux 视频教程 韦山东,韦东山 linux 设备树详解

    简 介 设备树视频录制完毕 29节 现在只要69元 学员对此课程的评价 这是最翔实最实惠最精益求精的设备树教程 感兴趣的了解一下 以下是课程详情 设备树是什么 设备树是一种机制 用文本的方式描述硬件资源 我们写驱动前要先看原理图 确定硬件连
  • Listener

    观察者设计模式 它是事件驱动的一种体现形式 就好比在做什么事情的时候被人盯着 当对应做到某件事时 触发事件 观察者模式通常由以下三部分组成 1 事件源 触发事件的对象 2 事件 触发的动作 里面封装了事件源 3 监听器 当事件源触发事件时
  • postman本地测试接口的地址路径,如何获取和拼接

    首先 在本地进行接口自测 那么就是本地的ip 既 http localhost 其他就是其他的ip地址 接着是端口号以及所添加的共用路径 我们可以从springboot项目的配置文件application yml获取 找到 server 服
  • vue3中Cron表达式的使用

    效果
  • Python中多进程间通信(multiprocessing.Manager)

    Python中写多进程的程序 一般都使用multiprocesing模块 进程间通讯有多种方式 包括信号 管道 消息队列 信号量 共享内存 socket等 这里主要介绍使用multiprocessing Manager模块实现进程间共享数据
  • 爬虫的大概思路

    爬虫一般来说两种 一种是页面分析 分析页面获取整理出数据 毕竟是要展示数据在页面 获取这些从页面上 另一种是获取对应接口 通过API方式来获取 因为归根到底 都是前台后端交互发送请求响应请求 两种方式各有优劣 方式一应该是比较常见的 但是从
  • 断言简介说明

    转自 断言简介说明 下文笔者讲述断言简介说明 如下所示 断言简介 在Java中 assert关键字是从Java 4开始引入的 为了避免和老版本的Java代码中使用了assert关键字导致错误 Java在执行的时候默认是不启动断言检查的 这个
  • 后端代码审计——PHP数组

    文章目录 PHP数组 1 索引数组 2 关联数组 3 数组创建 3 1 直接赋值 3 2 array 语言结构 4 多维数组 4 1 创建多维数组 5 数组元素访问 5 1 组元素操作 5 2 元素操作 5 3 数组的遍历 5 4 for
  • win11 安装 Anaconda(2022.10)+pycharm(2022.3/2023.1.4)+配置虚拟环境

    目录 一 安装Anaconda 二 Anaconda配置环境变量 三 Anaconda更改虚拟环境安装路径 创建虚拟环境 四 安装pycharm 五 pycharm配置Anaconda环境 一 安装Anaconda 1 下载 官网慢 可以选
  • app渗透-外在信息收集

    app渗透 外在信息收集 5 外在信息收集 5 1外在抓包 frida r0capture 5 1 1 frida的安装和使用 1 安装 2 使用测试 5 2 1 r0capture使用 5 外在信息收集 5 1外在抓包 frida r0c
  • 问题 D: 数据结构练习 -- 栈的操作

    题目描述 对输入整数序列1 2 3 执行一组栈操作 输出操作的出栈序列 输入 每行是一个测试用例 表示一个操作序列 操作序列由P和Q两个符号组成 P表示入栈 Q表示出栈 每个操作序列长度不超过1000 输出 对每个操作序列 输出出栈序列 若