【题目】Problem D.字符串处理

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);
					}
				}
			}
		}
	}
}
发布了233 篇原创文章 · 获赞 254 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/weixin_44485744/article/details/105034957