洛谷C++简单题小练习day13—文字处理软件

day13--文字处理软件--2.16

习题概述

题目描述

你需要开发一款文字处理软件。最开始时输入一个字符串作为初始文档。可以认为文档开头是第 0 个字符。需要支持以下操作:

·1 str:后接插入,在文档后面插入字符串 str,并输出文档的字符串;

·2 a b:截取文档部分,只保留文档中从第 a 个字符起 b 个字符,并输出文档的字符串;

·3 a str:插入片段,在文档中第 a 个字符前面插入字符串 str,并输出文档的字符串;

·4 str:查找子串,查找字符串str 在文档中最先的位置并输出;如果找不到输出 −1。

为了简化问题,规定初始的文档和每次操作中的 str 都不含有空格或换行。最多会有 q 次操作。

输入格式

第一行输入一个正整数 q,表示操作次数。

第二行输入一个字符串 str,表示最开始的字符串。

第三行开始,往下 q 行,每行表示一个操作,操作如题目描述所示。

输出格式

一共输出 q 行。

对于每个操作1,2,3,根据操作的要求输出一个字符串。

对于操作 4,根据操作的要求输出一个整数。

代码部分

#include<bits/stdc++.h>
using namespace std;int n,a; //操作次数及类型
string qwq; // 定义初始文档
string c1; // 存储裁剪后的字符串
string b1; // 存储待插入字符串
int b,c,d=-1,e; 
int main()
{cin>>n; // 输入操作次数cin>>qwq; // 输入初始文档for(int i=0;i<n;i++) // 循环处理每个操作{cin>>a; //读取操作类型if(a==1) //插入字符串{cin>>b1; // 读取待插入字符串qwq+=b1; // 将字符串 b1 插入到文档尾部cout<<qwq<<endl; // 输出文档}else if(a==2) // 裁剪字符串{cin>>b>>c; // 读取裁剪参数c1=qwq.substr(b,c); // 截取文档中从第 b 个字符起长度为 c 的子串qwq=c1; // 将裁剪后的子串保存到文档中cout<<qwq; // 输出文档cout<<endl;}else if(a==3) // 插入子串{cin>>b>>b1; // 读取插入位置和待插入字符串qwq.insert(b,b1); // 在文档的第 b 个字符前插入字符串 b1cout<<qwq<<endl; // 输出文档}else if(a==4) // 查找子串{cin>>b1; // 读取待查找字符串if(qwq.find(b1)<qwq.size()) // 查找子串在文档中的位置cout<<qwq.find(b1)<<endl; // 如果找到则输出位置elsecout<<-1<<endl; // 否则输出 -1}}return 0;
}

心得体会

1.  c1 = qwq.substr(b, c); 这行代码使用了 C++ 标准库中的 substr 函数,其作用是从字符串 qwq 中提取子串,并将得到的子串赋值给 c1

具体而言,substr 函数的原型是:string substr (size_t pos, size_t len) const;

·pos 参数表示要提取的子串的起始位置(索引),即从哪个字符开始提取子串。

·len 参数表示要提取的子串的长度,即需要提取多少个字符。

所以,qwq.substr(b, c) 的作用是从字符串 qwq 中的位置 b 处开始提取长度为 c 的子串,并将结果赋值给 c1

例如,如果 qwq 是 "Hello, World!",那么 qwq.substr(7, 5) 的结果就是 "World",因为它从索引 7 开始提取长度为 5 的子串。

2. qwq.insert(b, b1) 是 C++ 标准库中的 insert 函数,用于在字符串 qwq 的特定位置插入另一个字符串 b1

具体而言,insert 函数的原型是:string insert (size_t pos, const string& str);

·pos 参数表示插入的位置(索引),即在哪个字符前插入字符串。

·str 参数是要插入的字符串。

所以,qwq.insert(b, b1) 的作用是将字符串 b1 插入到字符串 qwq 的位置 b 前面。

例如,如果 qwq 是 "Hello, !",b 是 5,b1 是 "World",那么执行 qwq.insert(5, "World") 后,qwq 的值将变为 "Hello, World!",因为它在索引 5 的位置之前插入了字符串 "World"。

3.  if(qwq.find(b1) < qwq.size()) 是条件语句,用来判断字符串 b1 是否在字符串 qwq 中出现过。

具体而言,find 函数的原型是:size_t find (const string& str, size_t pos = 0) const;

·str 参数是要查找的字符串。

·pos 参数是查找的起始位置(索引),默认值为 0。

find 函数会在字符串 qwq 中从位置 pos 开始查找字符串 str,如果找到了,则返回它在字符串中第一次出现的位置(索引),否则返回 string::nposstring::npos 是一个常量,表示无法找到指定的字符或子串。

因此,if(qwq.find(b1) < qwq.size()) 的作用是判断字符串 b1 是否在字符串 qwq 中出现过。如果出现过,则返回其在字符串中第一次出现的位置,并与字符串 qwq 的长度比较大小,如果小于字符串 qwq 的长度,则说明找到了;否则就没有找到。

例如,如果 qwq 是 "Hello, World!",b1 是 "World",那么执行 qwq.find("World") 后,将返回 7,因为子串 "World" 在字符串 qwq 中首次出现的位置是 7。而如果 qwq.find("Java"),将返回 string::npos,因为字符串 qwq 中不存在子串 "Java"。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/685485.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu20修改xorg.conf实现双屏幕输出

如果显卡工作正常是不需要自己手动编写xorg.conf的&#xff08;这个文件一般不存在或者是空的&#xff09;&#xff0c;系统会根据xorg.conf的缺省自动设置屏幕。 但有时候有的屏幕输出不对&#xff0c;想手动固定一下配置。比如我的ROG想设置内屏用intel驱动&#xff08;集显…

HTTP请求的构造方式

前言&#xff1a; 在详解完HTTP协议的请求和响应格式以后&#xff0c;对HTTP协议就会有更深层次的了解。接下来就要了解HTTP协议的具体的一些用法基础。 在HTTP协议中有两个核心的作用&#xff1a;&#xff08;1&#xff09;如何让客户端构造一个HTTP请求&#xff1b;&#xff…

macOS 安装 conda

macOS 安装 conda 安装 conda参考 Conda是一个开源的软件包管理系统和环境管理系统&#xff0c;用于安装和管理软件包和其依赖项。 安装 conda mkdir miniconda3 cd miniconda3 bash Miniconda3-latest-MacOSX-x86_64.sh$ conda list参考 macOS 安装 conda开始使用conda

OpenAI Sora是世界模型?

初见Sora&#xff0c;我被OpenAI的野心震撼了。 他们不仅想教会AI理解视频&#xff0c;还要让它模拟整个物理世界&#xff01;这简直是通用人工智能的一大飞跃。 但当我深入了解后&#xff0c;我发现Sora比我想象的更复杂、更强大。 Sora不是简单的创意工具&#xff0c;而是…

8086指令小结

所有指令 &#xff08; 1 &#xff09;立即数不能作为目的操作数。 &#xff08; 2 &#xff09;不能在 2 个存储单元之间直接进行操作&#xff08;串操作除外&#xff09; 。 &#xff08; 3 &#xff09; MOV 指令和堆栈指令是惟一能对段寄存器进行操作的指令。 &…

【图像分割 2023】BRAU-Net++

【图像分割 2023】BRAU-Net 论文题目&#xff1a;BRAU-Net: U-Shaped Hybrid CNN-Transformer Network for Medical Image Segmentation 中文题目&#xff1a; 论文链接&#xff1a;[2401.00722] BRAU-Net: U-Shaped Hybrid CNN-Transformer Network for Medical Image Segment…

人工智能专题:通过AI转变保险(英译中)

今天分享的是人工智能系列深度研究报告&#xff1a;《人工智能专题&#xff1a;通过AI转变保险&#xff08;英译中&#xff09;》。 &#xff08;报告出品方&#xff1a;VIEWPOINT&#xff09; 在新时代释放数据的力量 在数据和人工智能 &#xff08; AI &#xff09; 融合的…

Leetcode 42. 接雨水

题意理解&#xff1a; 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 左边的柱子和右边的柱子形成围栏&#xff0c;可以使中间能够积水 求最大的积水面积。h*w 解题思路&#xff1a; 1.横向求解 这里的单…

vscode写MATLAB配置

vscode写MATLAB python下载 官网说明Versions of Python Compatible with MATLAB Products by Release - MATLAB & Simulink 不确定这三列都表示什么意思&#xff0c;尽量安装这三列都有的python版本吧&#xff0c;我安装的 MATLAB R2023b,python选择的是3.11.5 …

政安晨:【示例演绎】【Python】【Numpy数据处理】快速入门(三)—— 数组的操作

准备 这是Numpy数据处理的示例演绎系列文章的第三篇&#xff0c;我的前两篇文章为&#xff1a; 政安晨&#xff1a;【示例演绎】【Python】【Numpy数据处理】快速入门&#xff08;一&#xff09;https://blog.csdn.net/snowdenkeke/article/details/136125773 政安晨&#x…

【前端工程化面试题目】webpack 的热更新原理

可以在顺便学习一下 vite 的热更新原理&#xff0c;请参考这篇文章。 首先有几个知识点需要明确 热更新是针对开发过程中的开发服务器的&#xff0c;也就是 webpack-dev-serverwebpack 的热更新不需要额外的插件&#xff0c;但是需要在配置文件中 devServer属性中配置&#x…

计算机设计大赛 深度学习YOLO安检管制物品识别与检测 - python opencv

文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络4 Yolov55 模型训练6 实现效果7 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习YOLO安检管制误判识别与检测 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&…

17.3.1.5 二值化(黑白)

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 二值化的算法主要有以下两种&#xff1a; 1、彩色图像灰度化后&#xff0c;根据灰度和阈值来确定颜色是黑色还是白色。通常情况下使…

STM32

Unix时间戳 BKP 读写备份寄存器 main.c #include "stm32f10x.h" // Device header #include "Delay.h" #include "OLED.h" #include "Key.h"uint8_t KeyNum;uint16_t ArrayWrite[] {0x1234,0x2134}; uint16_t Arr…

Nvidia 携手 RTX 推出的本地运行 AI 聊天机器人

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

2024.2.16日总结(小程序开发8)

数据监听器 监听对象属性的变化 数据监听器支持监听对象中单个或多个属性的变化 纯数据字段 什么是纯数据字段 纯数据字段指的是哪些不用于页面渲染的data字段 应用场景:例如有些情况下&#xff0c;某些 data 中的字段既不会展示在界面上&#xff0c;也不会传递给其他组件…

html从零开始9:javaScript简介,语句、标识符,变量,JavaScript引入到文件【搬代码】

javaScript简介 javaScript语句、标识符 变量 var num 10; var就是固定声明,num就是变量名&#xff0c;10就是变量&#xff1b;<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Comp…

Flutter 动画(显式动画、隐式动画、Hero动画、页面转场动画、交错动画)

前言 当前案例 Flutter SDK版本&#xff1a;3.13.2 显式动画 Tween({this.begin,this.end}) 两个构造参数&#xff0c;分别是 开始值 和 结束值&#xff0c;根据这两个值&#xff0c;提供了控制动画的方法&#xff0c;以下是常用的&#xff1b; controller.forward() : 向前…

Docker笔记-搭建Python环境、安装依赖、打包镜像、导入镜像、编写bash脚本灵活调用

说明 适合无联网的机器及多Python的机器进行部署。 制作docker版Python环境 有网络及有docker的&#xff0c;拉取指定版本的python如&#xff1a; docker pull python:3.7 安装好后进入容器&#xff1a; docker run -it <name> /bin/bash 使用pip安装各种依赖&…

Git 存储大文件

Git 存储大文件处理方法 寻找大文件的后缀LFS的安装让仓库支持LFS添加到LFS提交 寻找大文件的后缀 find . -type f -size 10M | grep -v ".git" | rev | cut -d. -f1 | rev | sort | uniq这个命令的工作原理如下&#xff1a; find .-type f -size 10M&#xff1a;查…