问题描述
有以下三种操作。
(1) COPY l r
(0<=l<=r<n),n代表s串的长度。这个表示将s串从l到r的序列复制到剪贴板t里面,覆盖t字符串。
例如s为abcde
,t为pqr
执行COPY 1 2
变为
s为abcde
, t为bc
(2) CUT l r
(0<=l<=r<n),n代表s串的长度。这个表示将s串从l到r的序列剪切到剪贴板t里面(删除s串中的l到r的序列),覆盖t字符串。
例如s为abcde
, t为pqr
执行CUT 1 2
变为
s为ade
,t为bc
(3) PASTE p
(0<=p<n),n代表s串的长度。这个表示将t串插入到s串p位置的后面。t保持不变。
例如s为abcde
,t为pqr
执行PASTE 1
变为
s为abpqrcde
,t为pqr
Input
输入正整数N,表示N例测试。首先给你s串,再给你一个m,然后给你m个操作。
Output
对每个操作,输出操作后的s串。
Sample Input
1
abcde
5
CUT 1 2
COPY 0 1
PASTE 1
PASTE 1
CUT 1 3
Sample Output
ade
ade
adade
adadade
aade
#include<bits/stdc++.h>
using namespace std;
string s,op,t;
int N,m;
int main() {
cin>>N;
while(N--) {
cin>>s;
int len=s.size();
cin>>m;
while(m--){
int l,r,p;
cin>>op;
if(op=="COPY"){
t="";
cin>>l>>r;
t=s.substr(l,r-l+1);
cout<<s<<endl;
}
else if(op=="CUT"){
t="";
cin>>l>>r;
t=s.substr(l,r-l+1);
s.erase(l,r-l+1);
cout<<s<<endl;
}
else if(op=="PASTE"){
cin>>p;
s.insert(p+1,t);
cout<<s<<endl;
}
}
}
}