zoukankan      html  css  js  c++  java
  • 编辑

    编辑
    时间限制: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;
    }

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

  • 相关阅读:
    if 语句练习 身高体重问题
    阶乘
    if语句和switch语句
    Java 运算符
    Centos上把新安装的程序添加到系统环境变量的两种方法
    申请 Let’s Encrypt 泛域名证书 及 Nginx/Apache 证书配置
    Centos 6.5安装OpenSSL
    openssl version 查看openssl 版本出现openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory,怎么办
    ab压力测试遭遇apr_socket_recv: Connection reset by peer (104) 怎么办
    配置apache实现对网站某一目录的访问自动跳转到指定目录
  • 原文地址:https://www.cnblogs.com/tcwbob/p/13088456.html
Copyright © 2011-2022 走看看