编辑

编辑
时间限制:1秒 内存限制:128M
题目描述


现在给出一段全是字符序列的文章。光标可以被安置在文章的内部(任何两个连续的字符中间),或在开头(第一个字符的左边),或在结尾(最后一个字符的右边)。要求在文章中执行一系列的操作。可能的操作如下: 



L:将光标左移一个字符(如果光标在开头,则不用做任何操作) 



D:将光标右移一个字符(如果光标在结尾,则不用做任何操作) 



B:删除光标左边的一个字符(如果光标在开头,则不用做任何操作) 



P $:在光标的右边插入字符$($可以是英文字母表中的任何一个小写字母) 



在执行给定的操作前,光标在课文的结尾处 



编写一个程序,确定在执行完给定的操作后,文章看起来是什么样子

输入描述


输入的第一行是一篇文章,文章中只包括小写的英文字母,并且长度不超过100000个字符。 



下一行是一个整数N,1<=N<=500000,表示给定的操作数 



接下来的N行,是按执行顺序给定的各个操作

输出描述


输出一行,应输出执行完给定的各个操作后的文章

样例
输入
dmih
11
B
B
P x
L
B
B
B
P y
D
D
P z
输出
yxz

#include<iostream>
#include<string>
using namespace std;
int main()
{
string a;
char b;
int n,i;
cin>>a;
cin>>n;
int len=a.size();
int gb=len;
for(i=1;i<=n;i++)
{
cin>>b;
if(b=='L')
{
if(gb!=0)
{
gb--;
}
}
else if(b=='D')
{
if(gb!=len)
{
gb++;
}
}
else if(b=='B')
{
if(gb==len)
{
a.erase(gb-1,1);
len--;
gb=gb-1;
}
else if(gb!=0)
{
a.erase(gb-1,1);
len--;
gb=gb-1;
}
}
else if(b=='P')
{

string t;
cin>>t;
if(gb==len)
{
a=a+t;
len++;
gb++;
}
else
{
if(gb==0)
{
a.insert(gb,t);
len++;
gb++;
}
else
{
a.insert(gb,t);
len++;
gb++;
}
}
}
}
cout<<a;
return 0;
}

------------恢复内容开始------------

编辑
时间限制:1秒 内存限制:128M
题目描述


现在给出一段全是字符序列的文章。光标可以被安置在文章的内部(任何两个连续的字符中间),或在开头(第一个字符的左边),或在结尾(最后一个字符的右边)。要求在文章中执行一系列的操作。可能的操作如下: 



L:将光标左移一个字符(如果光标在开头,则不用做任何操作) 



D:将光标右移一个字符(如果光标在结尾,则不用做任何操作) 



B:删除光标左边的一个字符(如果光标在开头,则不用做任何操作) 



P $:在光标的右边插入字符$($可以是英文字母表中的任何一个小写字母) 



在执行给定的操作前,光标在课文的结尾处 



编写一个程序,确定在执行完给定的操作后,文章看起来是什么样子

输入描述


输入的第一行是一篇文章,文章中只包括小写的英文字母,并且长度不超过100000个字符。 



下一行是一个整数N,1<=N<=500000,表示给定的操作数 



接下来的N行,是按执行顺序给定的各个操作

输出描述


输出一行,应输出执行完给定的各个操作后的文章

样例
输入
dmih
11
B
B
P x
L
B
B
B
P y
D
D
P z
输出
yxz

#include<iostream>
#include<string>
using namespace std;
int main()
{
string a;
char b;
int n,i;
cin>>a;
cin>>n;
int len=a.size();
int gb=len;
for(i=1;i<=n;i++)
{
cin>>b;
if(b=='L')
{
if(gb!=0)
{
gb--;
}
}
else if(b=='D')
{
if(gb!=len)
{
gb++;
}
}
else if(b=='B')
{
if(gb==len)
{
a.erase(gb-1,1);
len--;
gb=gb-1;
}
else if(gb!=0)
{
a.erase(gb-1,1);
len--;
gb=gb-1;
}
}
else if(b=='P')
{

string t;
cin>>t;
if(gb==len)
{
a=a+t;
len++;
gb++;
}
else
{
if(gb==0)
{
a.insert(gb,t);
len++;
gb++;
}
else
{
a.insert(gb,t);
len++;
gb++;
}
}
}
}
cout<<a;
return 0;
}

------------恢复内容结束------------

原文地址:https://www.cnblogs.com/tcwbob/p/13088456.html