字符串处理

问题描述

有以下三种操作。

(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

 

abcde

5

CUT  1 2

COPY 0 1

PASTE 1

PASTE 1

CUT  1 3

 

Sample Output

 

ade

ade

adade

adadade

aade

 

P.S.字符串操作还是要练练手,好久没拿这种题练手了啊。。。

 1 #include <iostream>
 2 #include<string>
 5 using namespace std;
 6 
 7 int main()
 8 {
 9     int n;
10     cin >> n;
11     string s;
12     cin >> s;
13     string t;
14     while(n--){
15         string op;
16         cin >> op;
17         if(op=="CUT"){
18         int l,r;
19         cin >> l;
20         cin >> r;
21         string temp;
22         for(int i=l;i<=r;i++)
23             temp+=s[i];
24         t=temp;
25         s.erase(l,r);
26         cout << s <<endl;
27         }
28         else if(op=="COPY"){
29         int l,r;
30         cin >> l;
31         cin >> r;
32         string temp;
33         for(int i=l;i<=r;i++)
34             temp+=s[i];
35         t=temp;
36         cout << s <<endl;
37         }
38         else if(op=="PASTE"){
39         int p;
40         cin >> p;
41         s.insert(p,t);
42         cout << s << endl;
43         }
44     }
45     return 0;
46 }

总结:唉,这种题果然,用string类型超级爽啊超级爽,erase函数,insert函数,还是直接在后面+++,还是直接判断相等,真心爽啊爽,就是一定要注意头文件哦~

我本来想直接用switch的,结果c++的switch只支持整型。。。好吧,估计是和java记差了,还是老老实实用if吧。。。

posted @ 2018-03-27 21:15  Shaw_喆宇  阅读(160)  评论(0编辑  收藏  举报