Problem D.字符串处理
问题描述
有以下三种操作。
(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
2
abcde
5
CUT 1 2
COPY 0 1
PASTE 1
PASTE 1
CUT 1 3
abc
3
CUT 0 1
COPY 0 0
PASTE 0
Sample Output
ade
ade
adade
adadade
aade
c
c
cc
解答:
import java.util.Scanner;
/*
Problem D.字符串处理
问题描述
有以下三种操作。
(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
2
abcde
5
CUT 1 2
COPY 0 1
PASTE 1
PASTE 1
CUT 1 3
abc
3
CUT 0 1
COPY 0 0
PASTE 0
Sample Output
ade
ade
adade
adadade
aade
c
c
cc
*/
public class Test{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()) {
int n = scanner.nextInt();
for(int t = 0; t < n; t++) {
String str = scanner.next();
String stt = "";
int num = scanner.nextInt();
for(int i = 0; i < num; i++) {
String does = scanner.next();
if(does.equals("CUT")) {
int l = scanner.nextInt(), r = scanner.nextInt();
stt = str.substring(l, r + 1);
String str1, str2;
if(l == 0) str1 = "";
else str1 = str.substring(0, l);
if(r == str.length() - 1) str2 = "";
else str2 = str.substring(r + 1, str.length());
str = str1 + str2;
System.out.println(str);
}else if(does.equals("COPY")) {
int l = scanner.nextInt(), r = scanner.nextInt();
stt = str.substring(l, r + 1);
System.out.println(str);
}else if(does.equals("PASTE")) {
int p = scanner.nextInt();
String str1, str2;
str1 = str.substring(0, p + 1);
str2 = str.substring(p + 1, str.length());
str = str1 + stt + str2;
System.out.println(str);
}
}
}
}
}
}