题目描述
给出一串有n个字母组成的字符串,然后对这个字符串进行任意次数的移动操作,操作分两类:
1、del k,表示是删除操作,把字符串的前k个字母删除(从左侧开始的k个),
2、move k,表示是移动操作,把字符串的前k个字母(从左侧开始的k个)从原位置移除并放置在字符串的末尾
完成移动操作后,输出最后的字符串。其中字符串中的字符不超过10000个
输入格式
第一行,一个整数n,表示字符串中字符的个数
第二行,由n个字母组成的字符串
接下来若干行,每行给出一个操作
输出格式
输出完成移动操作后的字符串
输入输出样例
输入样例1:
3 cba move 1
输出样例1:
bac
输入样例2:
5 baaca move 2 del 2
输出样例2:
aba
这一题是很明显的队列问题,可以直接用队列解决
代码:
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,k;
string z;
deque<char> q;
cin>>n;
char s;
for(int i=1;i<=n;i++){
cin>>s;
q.push_back(s);
}
while(cin>>z>>k){
if(z=="del")
for(int i=1;i<=k;i++) q.pop_front();
else{
for(int i=1;i<=k;i++){
char x=q.front();
q.pop_front();
q.push_back(x);
}
}
}
for(int i=0;i<q.size();i++) cout<<q[i];
return 0;
}