C语言leetcode集训二:字符串(1):字符串遍历

     今天集训的内容是字符串中的字符串遍历题,仍然是简单题,但也可以掌握一些字符串所必要的知识,加深对字符串的理解,关于字符数组和字符串,字符串的输入输出在这就不再做过多赘述,关于字符串的问题,我们一般需要先用系统库函数malloc开辟一块空间用来存放字符串,并返回指向这段空间首地址的指针,下面看看都有哪些题型:

1.URL化

char* replaceSpaces(char* S, int length){char* str=(char*)malloc(sizeof(char)*length*30);int size=0;for(int i=0;i<length;i++){if(S[i]==' '){str[size++]='%';str[size++]='2';str[size++]='0';}else{str[size++]=S[i];}}str[size]='\0';return str;
}

      这道题大体思路就是遍历整个字符串,找到空格并替换,然后返回字符串,首先我们需要开辟一块空间,然后返回指向空间首地址的指针,相当于开辟了新的一块空间来存放修改后的字符串,接下来进行遍历,没遇到空格时就在对应下标处进行赋值,遇到空格时就把把空格替换成%20,要注意的是i的取值最大只能到字符串的真实长度length,还有就是字符串的末尾需要加"\0"来进行结束,否则会报错。

2.长度为三且各字符不同的子字符串

int countGoodSubstrings(char* s) {int cnt=0;int len=strlen(s);for(int i=0;i<len-2;i++){if(s[i]!=s[i+1]&&s[i]!=s[i+2]&&s[i+1]!=s[i+2])cnt++;}return cnt;
}

     这道题也是比较简单的,就是从头到尾遍历,注意每次比较的元素个数为3,为了不造成数组访问越界,i<len-2,如果各不相同,计数器cnt加1,最后返回即可。

3.将所有数字用字符替换

char* replaceDigits(char* s) {for(int i=0;s[i];i++){if(i%2!=0)s[i]=s[i-1]+s[i]-'0';}return s;
}

      这道题也没什么可说的,只需要处理奇数位下标即可,遇到数字时,就把它替换成它前一位的字符加上该位的数字所得到的字符,唯一值得注意的是,这里需要减'0',因为s[i]是字符1,而不是数字1,所以我们要减去'0'才能得到数字1,如果不这样做,加上的将是字符1的ASCII码值1,答案错误。

4.动态口令

char* dynamicPassword(char* password, int target) {int len=strlen(password);char* str=(char*)malloc(sizeof(char)*len+1);int size=0;for(int i=target;i<len;i++){str[size++]=password[i];}for(int i=0;i<target;i++){str[size++]=password[i];}str[size]='\0';return str;
}

     这道题在申请空间时为什么要加1,因为需要给'\0'留空间,像这种需要对字符串进行修改的,一般都要开辟空间来存储新的字符串,这道题也不例外,分两段进行存放,第一段是target之后的字符串,第二段是target之前的字符串,最后加上'\0'返回即可。

5.字符串轮转

bool isFlipedString(char* s1, char* s2){int len1=strlen(s1);int len2=strlen(s2);if(len1!=len2)return false;char* str=(char*)malloc(sizeof(char)*len1*2+1);int i=0;for(i=0;i<2*len1;i++){str[i]=s1[i%len1];}str[i]='\0';if(strstr(str,s2)!=NULL)return true;return false;
}

      这道题很有意思,首先就要比较两个字符串的长度,如果长度都不一样,那肯定不符合要求了,长度相同的情况下,我们怎么才能知道s2是不是s1轮转而成呢?其实你会发现,如果s2是由s1轮转而成,那必然会和s1+s1中的某一个子串匹配,基于这个想法,我们先获取s1+s1,然后调用strstr库函数查找s2是否在str中出现,如果出现会返回第一次出现的字符串的首地址,如果没有,会返回空指针。这个题在后面其实就是KMP算法的基本应用,感兴趣的可以提前了解一下。

    今天题都比较简单,主要是申请多少空间,循环的终止条件可能会出错,造成数组的越界访问,其他也没什么问题,感谢大家的阅读!

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

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

相关文章

串口通信(1)-硬件知识

本文讲解串口通信的硬件知识。让读者快速了解硬件知识&#xff0c;为下一步编写代码做基础。 目录 一、概述 二、串口通信分类 2.1信息的传送方向进行分类 2.2同步通信和异步通信 三、串口协议 3.1 RS232 3.1.1 电气特性 3.1.2 连接器的机械特性 3.1.3 连接类型 3.1…

【SpringBoot】入门精简

目录 一、初识 SpringBoot 1.1 介绍 1.2 项目创建 1.3 目录结构 1.4 修改配置 二、SpringBoot 集成 2.1 集成 Mybatis框架 2.2 集成 Pagehepler分页插件 2.3 集成 Druid数据库连接池 2.4 集成 Log日志管理 一、初识 SpringBoot 1.1 介绍 Spring Boot是一个用于简化Sp…

猎豹浏览器如何设置ip使用?socks5在网络安全中有什么优势?

猎豹浏览器如何设置ip使用&#xff1f;socks在网络安全中有什么优势&#xff1f; 一、猎豹浏览器如何设置ip使用&#xff1f; 在使用猎豹浏览器时&#xff0c;可以通过以下步骤来设置IP使用&#xff1a; 1. 打开猎豹浏览器&#xff0c;点击右上角的“菜单”按钮&#xff0c;在…

有趣的数学 数学建模入门三 数学建模入门示例两例 利用微积分求解

一、入门示例1 1、问题描述 某宾馆有150间客房&#xff0c;经过一段时间的经营&#xff0c;该宾馆经理得到一些数据&#xff1a;如果每间客房定价为200元&#xff0c;入住率为55&#xff05;&#xff1b;定价为180元&#xff0c;入住率为65&#xff05;&#xff1b;定价为160元…

圆通单号查询,圆通速递物流查询,用表格导出单号的详细物流信息

批量查询圆通速递单号的物流信息&#xff0c;以表格的形式导出单号的详细物流信息。 所需工具&#xff1a; 一个【快递批量查询高手】软件 圆通速递单号若干 操作步骤&#xff1a; 步骤1&#xff1a;运行【快递批量查询高手】软件&#xff0c;并登录 步骤2&#xff1a;点击主…

解决canvas清晰度问题devicePixelRatio

视频教程 解决canvas清晰度的问题【渡一教育】_哔哩哔哩_bilibili 检测网页本身是否缩放 ,即缩放倍率 window.devicePixelRatio 为了获得清晰图像,需要遵循以下公式 原始尺寸样式尺寸*缩放倍率 在项目中,canvas里的原始尺寸一般与css中的样式尺寸一样,所以在写js代码时,涉…

数据库 02-03补充 聚合函数--一般聚合分组和having

聚合函数&#xff1a; 01.一般的聚合函数&#xff1a; 举个例子&#xff1a; 一般聚合函数是用于单个元祖&#xff0c;就是返回一个数值。 02.分组聚合&#xff1a;可以返回多个元祖 举个例子&#xff1a; 分组的注意&#xff1a; 主要的是根据分组的话&#xff0c;一个…

盲盒小程序搭建:年入百W的“盲盒经济”

盲盒作为一种新的商业模式&#xff0c;正引领着新的消费热潮。尤其是在当下年轻人群体中&#xff0c;盲盒的影响力非常大。 盲盒作为一种新的消费方式&#xff0c;因其具备的不确定性、未知性、惊喜性&#xff0c;刺激着消费者的购买欲。在现在的商城中&#xff0c;盲盒的身影…

AutoAnimate动画库,仅需一行代码

插件官网,支持react,vue AutoAnimate - Add motion to your apps with a single line of code 自动加动画原理 AutoAnimate 加动画的原理也很简单&#xff0c;监听绑定的 DOM 节点里 DOM 结构变化&#xff0c;自动添加对应的过渡动画&#xff1a; 增加子节点 > 渐入动画…

Redis(三):常见数据类型:List、Set、Zset

List 列表 列表类型是用来存储多个有序的字符串&#xff0c; 如图&#xff1a; a、b、c、d、e 五个元素从左到右组成 了⼀个有序的列表&#xff0c;列表中的每个字符串称为元素&#xff08;element&#xff09;&#xff0c;⼀个列表最多可以存储个元素。在 Redis 中&#xff…

华为儿童手表,运动的引领者

作为家长&#xff0c;你是否经常为孩子的健康担忧&#xff0c;也一直在寻找一种可以与孩子一起运动、记录运动数据并让孩子产生对运动感兴趣的设备&#xff1f; 那不妨试试华为儿童手表&#xff0c;一款拥有专业的运动模式的智能手表。孩子只需简单操作手表&#xff0c;就能开…

自动化测试 —— Web自动化三大报错

Web自动化三大报错有哪些呢&#xff1f;接下来给大家讲讲。 Web自动化三大报错&#xff08;Exception&#xff09; 1. Exception1&#xff1a;no such element&#xff08;没有在页面上找到这个元素&#xff09; reason1&#xff1a;元素延迟加载了 solution&#xff1a; …

深度学习 Day11——T11优化器对比实验

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 文章目录 前言一、我的环境二、代码实现与执行结果1.引入库2.设置GPU&#xff08;如果使用的是CPU可以忽略这步&#xff09;3.导入数据4.查…

Docker部署Mysql5.7x和Myslq8.x

Docker部署Mysql5.7x和Myslq8.x 文章目录 1.部署mysql5.7.x2.部署mysql8.x3.创建用户授权及远程登录3.1 mysql5.7创建用户授权及远程登录3.2 mysql8创建用户授权及远程登录 4.总结 1.部署mysql5.7.x 在D盘下的mysql目录下新建如下目录&#xff1a; D:\mysql\conf\my.cnf内容如下…

centos7 docker Mysql8 搭建主从

Mysql8 搭建主从 docker的安装docker-compose的安装安装mysql配置主从在master配置在slave中配置在master中创建同步用户在slave中连接 测试连接测试配置测试数据同步遇到的问题id重复错误执行事务出错&#xff0c;跳过错误my.cnf 不删除多余配置的错误可能用到的命令 docker的…

【ARM Trace32(劳特巴赫) 使用介绍 13 -- Trace32 断点 Break 命令篇】

文章目录 1. Break.Set1.1 TRACE32 Break1.1.1 Break命令控制CPU的暂停1.2 Break.Set 设置断点1.2.1 Trace32 程序断点1.2.2 读写断点1.2.2.1 变量被改写为特定值触发halt1.2.2.2 设定非值触发halt1.2.2.4 变量被特定函数改写触发halt1.2.3 使用C/C++语法设置断点条件1.2.4 使用…

苍穹外卖项目笔记(11)— 数据统计-图形报表

前言 代码链接&#xff1a; Echo0701/take-out⁤ (github.com) 1 Apache ECharts 基于 Javascript 的数据可视化图标库&#xff0c;提供直观生动可交互可个性定制的数据可视化图表 柱形图饼形图折线图 【核心】通过直观的图表来展示数据。使用 Echarts &#xff0c;重点在…

算法——位运算

常见位运算总结 基础位运算 << >> ~与&&#xff1a;有0就是0或|&#xff1a;有1就是1异或^&#xff1a;相同为0&#xff0c;相异为1 / 无进位相加 给一个数n&#xff0c;确定他的二进制表示中的第x位是0还是1 让第x位与上1即可先让n右移x位&上一个1&#…

java反序列化数据过滤

前言&#xff1a; 反序列化漏洞的危害稍微了解一点的都知道&#xff0c;如果能找到前端某处存在反序列化漏洞&#xff0c;那基本上距离拿下服务器仅一步之遥&#xff0c;这个时候我们可以通过继承ObjectInputFilter添加tFilter实现对所有反序列化类的校验&#xff0c;当然这个需…