博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小C的记事本(栈记录字符串)
阅读量:4636 次
发布时间:2019-06-09

本文共 1787 字,大约阅读时间需要 5 分钟。

链接:

来源:牛客网

题目描述

小C最近学会了java小程序的开发,他很开心,于是想做一个简单的记事本程序练练手。
他希望他的记事本包含以下功能:
1、append(str),向记事本插入字符串 str(英文字符)
2、delete(k),删除记事本最后k个字符(保证不为空串)
3、print(k),输出记事本第k个字符(保证不为空串)
4、undo(),撤销最近的1(或者)操作,使记事本回到1(或者2)操作之前的状态
可怜的小C琢磨了半天还是做不来,聪明的你能解决小C的问题吗?

输入描述:

多组输入 第一行输入一个整数q,代表操作总数 以下q行每行描述了一个操作,每行以一个整数t开始(1 <= t <= 4)。 t表示上述问题陈述中定义的操作类型。 如果操作需要参数,则后跟空格分隔的参数。 题目保证所有操作均合法 1 <= q <= 10^6  1 <= k <= |记事本内容长度|  每个测试数据中str的总长度 <= 10^6 请使用 ios::sync_with_stdio(false); 对读写进行加速

输出描述:

所有操作类型3必须输出第k个字符,每行以换行符结束。
示例1

输入

81 ab3 22 21 cd3 1443 1

输出

bca

说明

**样例解释** 假设记事本用字符串S表示 1、插入ab,S="ab" 2、输出第2个字符,是b 3、删除最后2个字符,S="" 4、插入cd, S="cd" 5、输出第1个字符,是c 6、撤销,此时S="" 7、撤销,此时S="ab" 8、输出第1个字符,是a
#include#include
#include
#include
#define pi acos(-1)using namespace std;typedef long long ll;const int MAX_N=100000+50;const int INF=0x3f3f3f3f; int main(){ ios::sync_with_stdio(false); int q; while(cin>>q) { stack
sta; string s,s1; int num1; sta.push(s); while(q--) { int num; cin>>num; if(num==1) { cin>>s1; s+=s1; sta.push(s); } else { if(num==2) { cin>>num1; s=s.substr(0,s.length()-num1); sta.push(s); } else { if(num==3) { cin>>num1; cout<
<

  

转载于:https://www.cnblogs.com/xiechenxi/p/9085411.html

你可能感兴趣的文章
IT男专用表白程序
查看>>
【BZOJ】2120: 数颜色
查看>>
spring boot 文件上传工具类(bug 已修改)
查看>>
《机电传动控制》学习笔记03-1
查看>>
读《大道至简》第六章感想
查看>>
ef linq 中判断实体中是否包含某集合
查看>>
金蝶K/3 BOS产品培训教案
查看>>
章三 链表
查看>>
react组件回顶部
查看>>
【LeetCode】Palindrome Partitioning 解题报告
查看>>
Solution for Concurrent number of AOS' for this application exceeds the licensed number
查看>>
从壹开始微服务 [ DDD ] 之一 ║ D3模式设计初探 与 我的计划书
查看>>
python 错误之SyntaxError: Missing parentheses in call to 'print'
查看>>
Windows Phone开发(16):样式和控件模板
查看>>
CSE 3100 Systems Programming
查看>>
洛谷 1604——B进制星球(高精度算法)
查看>>
IntelliJ IDEA 的Project structure说明
查看>>
Java Security(JCE基本概念)
查看>>
Linux Supervisor的安装与使用入门
查看>>
AngularJS和DataModel
查看>>