蓝桥杯练习系统(算法训练)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 #include #include using namespace std; list text; list::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::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::iterator it=text.begin();it!=text.end();it++){ cout
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。
还没有评论,来说两句吧...