本文主要是介绍蓝桥杯练习系统(算法训练)ALGO-952 简易编辑器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
资源限制
内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s
问题描述
你要实现一个简易文本编辑器,每个字符是一个整数,程序要完成一下操作:
P 光标左移,如果在最左端则不动
N 光标右移,如果在最右端则不动
E 删除光标左侧的一个字符
R 将光标左侧内容逆序,光标移到极左
r 将光标右侧内容逆序,光标移到极右
I x 插入x
样例输入
I 12
I 56
I 89
P
r
R
E
样例输出
89
56
12
数据规模和约定
操作数少于10000
#include<iostream>
#include<list>
#include<algorithm>
using namespace std;
list<int> text;
list<int>::iterator cursor=text.begin();
int main(){int n;cin>>n;while(n--){char op;cin>>op;if(op=='P'){if(cursor!=text.begin()){cursor--;}}else if(op=='N'){if(cursor!=text.end()){cursor++;}}else if(op=='E'){if(cursor!=text.begin()){list<int>::iterator pre=--cursor;text.erase(pre);}}else if(op=='R'){reverse(text.begin(),cursor);cursor=text.begin();}else if(op=='r'){reverse(cursor,text.end());cursor=text.end(); }else if(op=='I'){int x;cin>>x;text.insert(cursor,x);//list为双向链表,插入操作将元素插入到cursor指向的位置之前,而不是之后。cursor的位置也随之变化 因此才不需要cursor++ }}for(list<int>::iterator it=text.begin();it!=text.end();it++){cout<<*it<<endl;} return 0;
}
这篇关于蓝桥杯练习系统(算法训练)ALGO-952 简易编辑器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!