题目描述

有以下三种操作。

(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

输入

输入正整数N,表示N例测试。首先给你s串,再给你一个m,然后给你m个操作。

输出

对每个操作,输出操作后的s串。

样例输入

abcde
5
CUT 1 2
COPY 0 1
PASTE 1
PASTE 1
CUT 1 3

样例输出

ade
ade
adade
adadade
aade

来源

2016机考D题

#include<iostream>
#include<cstring>
#define maxn 1005
using namespace std; char s[maxn];
char t[maxn];
char tmp[maxn];
char op[]; int main()
{
int m,i;
int l,r,p; while(cin>>s)
{
cin>>m;
strcpy(t,"");
while(m--)
{
cin>>op;
if(strcmp(op,"COPY")==) //COPY
{
cin>>l>>r;
for(i=l; i<=r; i++)
{
tmp[i-l]=s[i];
}
tmp[r-l+]='\0';
strcpy(t,tmp);
cout<<s<<endl;
}
else if(strcmp(op,"CUT")==)
{
cin>>l>>r;
for(i=l; i<=r; i++)
{
tmp[i-l]=s[i];
}
tmp[r-l+]='\0';
strcpy(t,tmp); strcpy(tmp,""); int len1=strlen(s);
int len2=r-l+;
for(i=; i<l; i++)
tmp[i]=s[i];
for(i=l; i<len1-len2; i++)
tmp[i]=s[i+len2];
tmp[i]='\0';
strcpy(s,tmp);
cout<<s<<endl;
}
else
{
cin>>p;
int len1=strlen(s);
int len2=strlen(t);
for(i=; i<=p; i++)
tmp[i]=s[i];
for(i=p+; i<=p+len2; i++)
tmp[i]=t[i-p-];
for(i=p++len2; i<len1+len2; i++)
tmp[i]=s[i-len2];
tmp[i]='\0';
strcpy(s,tmp);
cout<<s<<endl;
}
}
}
return ;
}

BUPT复试专题—字符串处理(2016)的更多相关文章

  1. BUPT复试专题—字符串转换(2013计院)

    题目描述 我们将仅由若干个同一小写字母构成的字符串称之为简单串,例如"aaaa"是一个简单串,而"abcd"则不是简单串.现在给你一个仅由小写字母组成的字符串, ...

  2. BUPT复试专题—寻找i*j=m的个数(2016)

    题目描述 3*3的矩阵内容. 1 2 3 2 4 6 3 6 9 即a[i][j](1<=i<=n,1<=j<=n)=i*j. 问一个这样n*n的矩阵里面,里面m出现的次数. ...

  3. BUPT复试专题—寻找变化前01序列(2016)

    题目描述 给你一个01序列,HDLC协议处理的话,如果出现连续的5个1会补1个0.例如1111110,会变成11111010. 现在给你一个经过HDLC处理后的01序列,你需要找到HDLC处理之前的0 ...

  4. BUPT复试专题—三元组(2016)

    题目描述 给你一个长度为m的数组(数组元素从0到m-1),如果数组里有a[i]+a[j]==a[k](i,j,k大于等于0并且小于m),便称之为三元组.现在给你一个数组,让你求三元组的个数. 例如m为 ...

  5. BUPT复试专题—解析表达式(2015)

    题目描述 输入一个字符串形式的表达式,该表达式中包括整数,四则运算符(+.-.*./),括号,三角函数(sin(x).cos(x).tan(x)),底数函数(lg(x).ln(x)),计算该表达式的值 ...

  6. BUPT复试专题—数据库检索(2014软院)

    题目描述 在数据库的操作过程中,我们进场会遇到检索操作.这个题目的任务是完成一些特定格式的检索,并输出符合条件的数据库中的所有结果. 我们现在有一个数据库,维护了学生的姓名(Name),性别(Sex) ...

  7. BUPT复试专题—统计字母(2008)

    题目描述 给定一个只有小写英文字母组成的字符串,串长为n.请你编写程序求出这个字符串中出现次数最多的字母. 输入 输入的第一行为t(0 < t < 10),表示有t组测试用例.对于每组测试 ...

  8. BUPT复试专题—密码(2009)

    题目描述   输入 有多组输入,每组: 第一行:由26个小写字母组成的串以空格隔开,如 b a c e u f g h i j k l m n o p q r s t v w x y z d v y ...

  9. BUPT复试专题—科学计算器(2009)

    题目描述 给你一个不带括号的表达式,这个表达式只包含加.减.乘.除,请求出这个表 达式的最后结果,最后结果一定是整数: 输入 一个数学表达式,只包括数字,数字保证是非负整数,以及五种运算符 " ...

随机推荐

  1. UNIX环境C语言进程控制

    一.进程ID 进程ID即是进程标识,每一个进程都会有一个唯一的非负整数来作为它的进程ID. ID为0的进程通常是调度进程,也可称为交换进程,该进程是内核的一部分,不执行硬盘上的程序,因此也被称为系统进 ...

  2. 日志平台-ELK6.4

    一.环境 linux-node1 192.168.127.201 linux-node2 192.168.127.202 centos7.3 elasticsearch6.4 logstash6.4 ...

  3. LightOJ 1422 区间DP Halloween Costumes

    d(i, j)表示第i天到第j天至少要穿多少件衣服. 先不考虑第i天和后面 i+1 ~ j 天的联系,那就是至少要穿 1 + d(i+1, j)件衣服. 再看状态转移,如果后面第k(i+1 ≤ k ≤ ...

  4. iOS-MVC设计模式不足

    View 的最大的任务就是向 Controller 传递用户动作事件. ViewController 不再承担一切代理和数据源的职责,通常只负责一些分发和取消网络请求以及一些其他的任务. 1.1 苹果 ...

  5. Appium+python自动化-appium元素定位

    前言 appium定位app上的元素,可以通过id,name.class这些属性定位到 一.id定位 1.appium的id属性也就是通过UI Automator工具查看的resource-id属性

  6. Python内置函数7

    Python内置函数7 1.propertypython内置的一个装饰器可参考https://blog.csdn.net/u013205877/article/details/77804137 2.q ...

  7. 【PL/SQL编程基础】

    [PL/SQL编程基础]语法: declare 声明部分,例如定义变量.常量.游标 begin 程序编写,SQL语句 exception 处理异常 end: / 正斜杠表示执行程序快范例 -- Cre ...

  8. .NET重构(六):删除用户和结账的理解

    导读:这是第二回机房了,第一回不明不白,不清不楚的就过去了(相对),这一回,有了新的发现.就是在用户删除的时候,涉及到的一些逻辑问题,以及结账时的数据来源问题. 一.用户删除 问题:第一次机房,包括重 ...

  9. MySQL binlog_rows_query_log_events在线设置无效

    binlog_rows_query_log_events 对binlog_format=row有效,设为true后可以在binary log中记录原始的语句 官方文档显示binlog_rows_que ...

  10. 基于SEDA的异步框架设计与实现

    基于SEDA的异步框架设计与实现 二.为什么使用SEDA 目前,面对并发环境,主流互联网服务器编程模型有两种:多线程模型以及事件驱动模型.但是这两个模型都不足以解决这个问题.我们来首先看一下这两种编程 ...