C++编程逻辑讲解step by step:字符串的查找和替换

题目

word中有查找和替换功能,编程实现在一个字符串中进行查找和替换的功能。


分析

题目不允许使用另外数组,要求在原数组上进行替换;需要不断地移动字符串,或者增长或者缩短,初始数组必须足够大。


代码

 

#include <iostream>
#include <cstring>
using namespace std;
char str[]="East China Normal University is very beautiful. I like East China Normal University very much. There is a big playground in East China Normal University. The teachers in East China Normal University are very kind. The students are very polite and smart.";
void search(char *, char*, int, int);
void replace(char *, char*, int, int);
int main(){char s1[50];           //s1 存放查找字符串 cout<<"Please enter the string you want to find: ";gets(s1);int l1=strlen(s1);    char s2[50];             //s2 存放替换字符串cout<<"Please enter the string to replace: ";gets(s2);int l2=strlen(s2);search(s1, s2, l1, l2);cout<<"The replaced array is :"<<endl;cout<<str<<endl;return 0;
} 
void replace(char *s2, char *p1, int l1, int l2){       //s2 接收替换字符串,p1 接收要替换位置的首字符地址,l1 存放查找字符串的长度,l2 存放替换字符串的长度 int i, j, k, m=l1-l2;char *r1, *r2;if(m>0){                                            //查找字符串大于替换,进行前移 for(i=0; i<l2; i++)                             //把原字符串替换 *(p1+i)=*(s2+i);for(j=l2; *(p1+m+j)!='\0'; j++)                 //前移操作 *(p1+j)=*(p1+m+j);*(p1+j)='\0';}else if(m<0){                                       //替换字符串大于查找,进行后移 i=strlen(str)-1;for(k=0; k<-m; k++)                             //铺路,把字符串结束标志向后移 m 个位置 *(str+i+k+1)=' ';            *(str+i+k+1)='\0';                              //路的末尾加上字符串结束标志 for( ; (str+i)>=(p1+l1); i--)                   //后移操作 *(str+i-m)=*(str+i);for(j=0; j<l2; j++)                             //把原字符串替换 *(p1+j)=*(s2+j);}else                                                //替换字符串等于查找for(r1=s2; r1<(s2+l1); r1++, p1++)*p1=*r1;	
}
void search(char *s1, char *s2, int l1, int l2){        //s1 接收查找字符串,s2 接收替换字符串,l1 存放查找字符串的长度,l2 存放替换字符串的长度char *p1, *p2, *s3;int i=1, j=0;bool flag=false;for(p1=str; *(p1+l1-1)!='\0'; p1++){if(*p1==*s1){if(*(p1+l1-1)==*(s1+l1-1)){                 //头尾字符相同,且长度相同 i=1;for(p2=p1, s3=s1; i<=l1; p2++, s3++, i++){if(*p2==*s3&&i==l1) flag=true;      //完全相同 if(*p2!=*s3) break;                 //发现不同,退出循环,较少情况 if(flag){replace(s2, p1, l1, l2);        //进行替换 j++;flag=false;}}	}}}if(j==0)cout<<"Not found!";                         //没找到 else cout<<"Found "<<j<<" results in all.";cout<<endl;
}

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

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

相关文章

rpm包下载

内网无法下载、选择外网的一台机器下载rpm包 下载后上传rpm包 1、创建下载目录 mkdir /data/asap/test 2、下载能留存包的工具 sudo yum install yum-utils -y 报错就是环境问题没下载成功&#xff0c;我换了个环境正常的机器就可以了 3、下载rpm包到指定目录/data/asa…

MyBatis案例

目录 一、配置文件1.数据与环境准备1.1 创建tb_brand表1.2 在Pojo中创建实体类Brand.java1.3 在test文件夹下的java中创建测试类1.4 安装MyBatisX插件 二、增删改查1. 查询 一、配置文件 1.数据与环境准备 1.1 创建tb_brand表 -- 删除tb_brand表 drop table if exists tb_bra…

MySQL 9.0 悄悄上线,支持面向AI的向量数据库

MySQL狂热粉丝群已经发现MySQL官网上MySQL9.0这两天悄然上线&#xff0c;已经可以下载体验了&#xff0c;目前被定义为创新版本&#xff08;Innovation&#xff09;。 下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/ 支持主流的操作系统&#xff0c;安装后可以直…

虚拟机的网络配置

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️ 每一步都向着梦想靠近&#xff0c;坚持就是胜利的序曲 一 …

大语言模型系列-Transformer(二)

Transformer 模型的入门可以从以下几个方面开始&#xff1a; 1. 理解基本概念 序列到序列&#xff08;Sequence-to-Sequence&#xff09;任务&#xff1a;Transformer 模型主要用于这类任务&#xff0c;如机器翻译、文本摘要等。注意力机制&#xff08;Attention Mechanism&a…

VisualStudio2019受支持的.NET Core

1.VS Studio2019受支持的.NET Core&#xff1f; 适用于 Visual Studio 的 .NET SDK 下载 (microsoft.com) Visual Studio 2019 默认并不直接支持 .NET 6 及以上版本。要使用 .NET 6 或更高版本&#xff0c;你需要在 Visual Studio 2019 中采取额外步骤&#xff0c;比如安装相应…

VUE项目安全漏洞扫描和修复

npm audit 1、npm audit是npm 6 新增的一个命令,可以允许开发人员分析复杂的代码并查明特定的漏洞。 2、npm audit名称执行&#xff0c;需要包package.json和package-lock.json文件。它是通过分析 package-lock.json 文件&#xff0c;继而扫描我们的包分析是否包含漏洞的。 …

一个opencv实现检测程序

引言 图像处理是计算机视觉中的一个重要领域&#xff0c;它在许多应用中扮演着关键角色&#xff0c;如自动驾驶、医疗图像分析和人脸识别等。边缘检测是图像处理中的基本任务之一&#xff0c;它用于识别图像中的显著边界。本文将通过一个基于 Python 和 OpenCV 的示例程序&…

智谱AI: ChatGLM API的使用

一、获取API 1、打开网址&#xff1a;智谱AI开放平台 注册账号登录 2、登录&#xff0c;查看API key (注册后赠送100万token&#xff0c;实名认证后多赠送400万, 有效期一个) 二、安装及调用 安装质谱SDK pip install zhipuai调用方式 流式调用 from zhipuai import ZhipuA…

pgrouting使用

pgRouting是一个为PostgreSQL和PostGIS提供路由功能的开源库&#xff0c;它支持复杂的图论算法&#xff0c;用于在地理网络中进行最短路径搜索。以下是pgRouting的一些应用实例。 注意事项&#xff1a; 1、路网表中的id、source、target必须是int类型&#xff0c;否则创建拓扑…

记录一个关于IntelliJ IDEA查找接口的小小问题

idea中可以通过双击shift输入接口url路径直接找到在controller中对应的方法。。部分项目出现无法查找的问题&#xff0c;如上图所示&#xff0c;观察发现正常的项目里面&#xff0c;RequestMapping旁边会出现一个小地球的图标&#xff08;注意是较新版本的IDEA才会有&#xff0…

改善员工体验的继任计划有三种方法

人才管理不仅仅是完成年度绩效评估。这是为了理解和回应员工对你组织的看法。在本文中&#xff0c;我们将学习如何通过继任计划改变员工的经验。 你组织的关键角色将不可避免地是空的。每个人都会退休或跳槽。你需要一个计划来填补这些职位&#xff0c;以最大限度地减少劳动力…

NoteLLM: 大语言模型在小红书推荐系统的落地应用

今天分享一篇小红书今年3月的论文&#xff0c;介绍了大语言模型在小红书笔记推荐场景下的落地应用&#xff0c;主要是围绕如何利用LLM的表征能力来生成更适用于i2i召回的文本embedding&#xff0c;思路简单&#xff0c;落地也容易&#xff0c;个人觉得实践价值非常高&#xff0…

sql拉链表

1、定义&#xff1a;维护历史状态以及最新数据的一种表 2、使用场景 1、有一些表的数据量很大&#xff0c;比如一张用户表&#xff0c;大约1亿条记录&#xff0c;50个字段&#xff0c;这种表 2.表中的部分字段会被update更新操作&#xff0c;如用户联系方式&#xff0c;产品的…

【数据结构|C语言版】四大排序(算法)

前言1. 插入排序1.1 直接插入排序1.2 希尔排序 2. 选择排序2.1 选择排序2.2 堆排序 3. 交换排序3.1 冒泡排序冒泡排序的步骤 3.2 快速排序快速排序的步骤 4. 归并排序归并排序的步骤&#xff1a;代码解释&#xff1a;归并排序的性能&#xff1a; 上期回顾: 【数据结构|C语言版】…

从0到1手写vue源码

模版引擎 数组join法(字符串) es6反引号法(模版字符串换行) mustache (小胡子) 引入mustache 模版引擎的使用 mustache.render(templatestr,data)

65.Python-web框架-Django-免费模板django-datta-able的admin_datta

目录 1.起源 2.admin_datta admin_datta\urls.py admin_datta\views.py 1.起源 前面有一篇文章介绍了django-datta-able&#xff1a;54.Python-web框架-Django-免费模板django-datta-able_danjon web框架商用免费-CSDN博客 页面是这个样子。 从template\include\sidebar.…

vivado联合modelsim仿真

一. 编译Vivado仿真库 打开Vivado&#xff0c;Tools -> Compile Simulation Libraries 二. 设置仿真工具和库路径 因为新建工程的默认仿真工具是Vivado Simulator&#xff0c;所以要使用Modelsim仿真&#xff0c;每个新工程都要设置一次&#xff0c;方法如下&#xff1a; …

CentOS 7.9 快速更换 阿里云源教程

CentOS 7.9 更换源教程 总结 # 下载 wget yum -y install wget # 备份 yum 源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak # 下载阿里云的yum源到 /etc/yum.repos.d/ # 此处以 CentOS 7 为例&#xff0c;如果是其它版本或者系统的话&#…

亚马逊云科技AWS免费大热AI应用开发证书(含题库、开卷)

亚马逊云科技AWS官方生成式AI免费证书来了&#xff01;内含免费AI基础课程&#xff01;快速掌握AWS的前沿AI技术&#xff0c;后端开发程序员也可以速成AI专家&#xff0c;了解当下最&#x1f525;的AWS AI架构解决方案&#xff01; 本证书内容包括AWS上的AI基础知识&#xff0c…