当前位置: 首页 > news >正文

CCCC天梯赛L1-094 剪切粘贴

题目链接:

字符串函数:

1、截取字符串:

    //起始位置为3,结束位置为5
    string s = "aabcdefg";
    
    //下标从0开始 [从开始位置,结束位置]
    string sub = s.substr(3,3);
    //输出cde, 有返回值string
    //并且原字符串不改变, s="aabcdefg"

2、删除字符串:

    //起始位置为3,结束位置为5
    string s = "aabcdefg";
    
    //下标从0开始 [从开始位置,删除长度]
    s.erase(3,3);
    //s = aabfg, 无返回值

3、寻找字符串

    //查找 "cde"
    string s = "aabcdefg";
    
    //下标从0开始  返回找的的字符串的一个字母下标
    int x = s.find("cde");
    //x = 3, find函数有返回值

4、插入字符串

    //从3插入字符串"ggg"
    string s = "aabcdefg";
    //从0开始 在3之前插入
    s.insert(3, "ggg");
    //输出 aabgggcdefg

思路:

题目要求我们在给定两个位置中间插入,这里容易搞混淆:

1、错误写法:

    //假设要在a,b之间插入"cde"
    string s = "aabfg";
    
    int p1 = s.find("a");
    int p2 = s.find("b");
    if(p1+1 == p2){
        s.insert(p2, "cde");
    }
    //p1 = 0, p2 = 2;
    //输出 s = "aabfg"

这种写法是错误的,它没有在a,b之间插入。它是分别查找a,b在字符串第一次出现的位置,如果a是连续的,那么它就查询不到了。

2、正确写法:

    //假设要在a,b之间插入"cde"
    string s = "aabfg";
    //让k="ab"
    string k = ""; k+="a"; k+="b";
    //在s中查找ab位置
    int p = s.find(k);
    //1是a的长度
    s.insert(p+1, "cde");
    //输出s = "aacdebfg" p = 1;

我们在字符串中查找ab位置,如果能查找到ab,那么返回的是a的位置p, p 在加上 a 的长度,就是插入的位置了。

代码如下:

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N =110;

int n;
string s;

signed main(){
    cin >> s; cin >> n;
    while(n--){
        int start, end;
        string p1, p2;
        cin >> start >> end >> p1 >> p2;
        //剪切
        string sub=s.substr(start-1, end-start+1);
        s.erase(start-1, end-start+1);
        //粘贴
        int t = -1;
        string m = p1+p2;
        int p = s.find(m);
        if(p != -1){
            t = p+p1.size();
        }
        
        if(t != -1){
            s.insert(t, sub);
        }
        else s += sub;
    }
    cout << s << endl;
    return 0;
}

相关文章:

  • 进程原理以及系统调用
  • 设计与实现高性能安全TOKEN系统
  • 【YOLOv8】YOLOv8改进系列(11)----替换主干网络之MobileNetV4
  • kubernetes》》k8s》》 kubeadm、kubectl、kubelet 重启pod
  • 【力扣hot100题】(029)两两交换链表中的节点
  • 【详细解释第三部分:方法的使用【java版本详细】】
  • 从代码学习深度学习 - 稠密连接网络(DenseNet)PyTorch版
  • 装饰器模式与模板方法模式实现MyBatis-Plus QueryWrapper 扩展
  • Flink SQL Client bug ---datagen connector
  • 动态规划(11.按摩师)
  • Opencv计算机视觉编程攻略-第五节 用形态学运算变换图像
  • Git团队开发命令总结
  • 数字人训练数据修正解释
  • java 并发编程-ReentrantLock
  • python识别扫描版PDF文件,获取扫描版PDF文件的文本内容
  • 二叉树搜索树与双向链表
  • hackmyvm-flossy
  • AWS用Glue读取S3文件上传数据到Redshift,再导出到Quicksight完整版,含VPC配置
  • Android: Fragment 的使用指南
  • 004 健身房个性化训练计划——金丹期(体态改善)
  • 网络公司网站建设报价/网站地址ip域名查询
  • 宝鸡网站建设求职简历/萧山市seo关键词排名
  • 衡水企业网站建设/公众号怎么推广和引流
  • 免费学服装设计的网站/网络营销方式对比分析
  • 湖南平台网站建设推荐/奶糖 seo 博客
  • 360网站做不了网银怎么办/百度推广代理公司哪家好