BUPT复试专题—字符串处理(2016)
题目描述
有以下三种操作。
(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
来源
#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)的更多相关文章
- BUPT复试专题—字符串转换(2013计院)
题目描述 我们将仅由若干个同一小写字母构成的字符串称之为简单串,例如"aaaa"是一个简单串,而"abcd"则不是简单串.现在给你一个仅由小写字母组成的字符串, ...
- 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出现的次数. ...
- BUPT复试专题—寻找变化前01序列(2016)
题目描述 给你一个01序列,HDLC协议处理的话,如果出现连续的5个1会补1个0.例如1111110,会变成11111010. 现在给你一个经过HDLC处理后的01序列,你需要找到HDLC处理之前的0 ...
- BUPT复试专题—三元组(2016)
题目描述 给你一个长度为m的数组(数组元素从0到m-1),如果数组里有a[i]+a[j]==a[k](i,j,k大于等于0并且小于m),便称之为三元组.现在给你一个数组,让你求三元组的个数. 例如m为 ...
- BUPT复试专题—解析表达式(2015)
题目描述 输入一个字符串形式的表达式,该表达式中包括整数,四则运算符(+.-.*./),括号,三角函数(sin(x).cos(x).tan(x)),底数函数(lg(x).ln(x)),计算该表达式的值 ...
- BUPT复试专题—数据库检索(2014软院)
题目描述 在数据库的操作过程中,我们进场会遇到检索操作.这个题目的任务是完成一些特定格式的检索,并输出符合条件的数据库中的所有结果. 我们现在有一个数据库,维护了学生的姓名(Name),性别(Sex) ...
- BUPT复试专题—统计字母(2008)
题目描述 给定一个只有小写英文字母组成的字符串,串长为n.请你编写程序求出这个字符串中出现次数最多的字母. 输入 输入的第一行为t(0 < t < 10),表示有t组测试用例.对于每组测试 ...
- 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 ...
- BUPT复试专题—科学计算器(2009)
题目描述 给你一个不带括号的表达式,这个表达式只包含加.减.乘.除,请求出这个表 达式的最后结果,最后结果一定是整数: 输入 一个数学表达式,只包括数字,数字保证是非负整数,以及五种运算符 " ...
随机推荐
- UNIX环境C语言进程控制
一.进程ID 进程ID即是进程标识,每一个进程都会有一个唯一的非负整数来作为它的进程ID. ID为0的进程通常是调度进程,也可称为交换进程,该进程是内核的一部分,不执行硬盘上的程序,因此也被称为系统进 ...
- 日志平台-ELK6.4
一.环境 linux-node1 192.168.127.201 linux-node2 192.168.127.202 centos7.3 elasticsearch6.4 logstash6.4 ...
- LightOJ 1422 区间DP Halloween Costumes
d(i, j)表示第i天到第j天至少要穿多少件衣服. 先不考虑第i天和后面 i+1 ~ j 天的联系,那就是至少要穿 1 + d(i+1, j)件衣服. 再看状态转移,如果后面第k(i+1 ≤ k ≤ ...
- iOS-MVC设计模式不足
View 的最大的任务就是向 Controller 传递用户动作事件. ViewController 不再承担一切代理和数据源的职责,通常只负责一些分发和取消网络请求以及一些其他的任务. 1.1 苹果 ...
- Appium+python自动化-appium元素定位
前言 appium定位app上的元素,可以通过id,name.class这些属性定位到 一.id定位 1.appium的id属性也就是通过UI Automator工具查看的resource-id属性
- Python内置函数7
Python内置函数7 1.propertypython内置的一个装饰器可参考https://blog.csdn.net/u013205877/article/details/77804137 2.q ...
- 【PL/SQL编程基础】
[PL/SQL编程基础]语法: declare 声明部分,例如定义变量.常量.游标 begin 程序编写,SQL语句 exception 处理异常 end: / 正斜杠表示执行程序快范例 -- Cre ...
- .NET重构(六):删除用户和结账的理解
导读:这是第二回机房了,第一回不明不白,不清不楚的就过去了(相对),这一回,有了新的发现.就是在用户删除的时候,涉及到的一些逻辑问题,以及结账时的数据来源问题. 一.用户删除 问题:第一次机房,包括重 ...
- MySQL binlog_rows_query_log_events在线设置无效
binlog_rows_query_log_events 对binlog_format=row有效,设为true后可以在binary log中记录原始的语句 官方文档显示binlog_rows_que ...
- 基于SEDA的异步框架设计与实现
基于SEDA的异步框架设计与实现 二.为什么使用SEDA 目前,面对并发环境,主流互联网服务器编程模型有两种:多线程模型以及事件驱动模型.但是这两个模型都不足以解决这个问题.我们来首先看一下这两种编程 ...