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.mfbz.cn/a/237895.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《IT圈里的“鄙视链”:看不起谁又被谁看不起?》

文章目录 每日一句正能量前言一、编程语言篇二、工具篇三、操作系统篇四、硬件篇五、职场篇后记 每日一句正能量 人的结构就是相互支撑&#xff0c;众人的事业需要每个人的参与。 前言 每个领域都存在着错综复杂的鄙视链,这一点在IT 领域更为突出。从编程语言、工具&#xff0…

简单的 u-popup 弹出框

uniapp中的popup组件可以用于弹出简单的提示框、操作框、菜单等。它可以通过position属性控制弹出框的位置&#xff0c;不同的position值会使得弹出框呈现不同的弹出形式 目录 一、实现思路 二、实现步骤 ①view部分展示 ②JavaScript 内容 ③css中样式展示 三、效果展示 …

C++连接mysql(改进)

使用vs2019对window11中的数据库进行连接 1. 配置连接环境 首先需要把mysql中的头文件和库文件放入到c项目工程中 1.打开安装MySQL的目录&#xff0c;在windows系统中如果是默认路径&#xff0c;应该和我的是一样的&#xff1a;C:\Program Files\MySQL\MySQL Server 8.0 2.找到…

某音上很火的圣诞树分享

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 效果截图&#xff08;这里不给动态了&#xff0c;某音到处都是了&#xff09;&#xff1a; 源代码&#xff1a; <script src"…

LeetCode-1008. 前序遍历构造二叉搜索树【栈 树 二叉搜索树 数组 二叉树 单调栈】

LeetCode-1008. 前序遍历构造二叉搜索树【栈 树 二叉搜索树 数组 二叉树 单调栈】 题目描述&#xff1a;解题思路一&#xff1a;题目大致意思就是给定一个二叉树的前序遍历&#xff0c;求对应的二叉搜索树。一种比较特殊的点是「二叉搜索树」的中序遍历的结果是【有序序列】&am…

智慧水利-城市水循环可视化助力城市水资源可持续发展

2021年《中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要》明确指出&#xff1a;构建智慧水利体系&#xff0c;以流域为单元提升水情测报和智能调度能力。水利部按照“需求牵引、应用至上、数字赋能、提升能力”总要求&#xff0c;编制了《“十四五”智…

深入理解强化学习——马尔可夫决策过程:预测与控制

分类目录&#xff1a;《深入理解强化学习》总目录 预测&#xff08;Prediction&#xff09;和控制&#xff08;Control&#xff09;是马尔可夫决策过程里面的核心问题。预测&#xff08;评估一个给定的策略&#xff09;的输入是马尔可夫决策过程 < S , A , R , P , γ > …

中职网络安全应急响应—Server2228

应急响应 任务环境说明: 服务器场景:Server2228(开放链接) 用户名:root,密码:p@ssw0rd123 1. 找出被黑客修改的系统别名,并将倒数第二个别名作为Flag值提交; 通过用户名和密码登录系统 在 Linux 中,利用 “alias” 命令去查看当前系统中定义的所有别名 flag:ss …

LeetCode:1631. 最小体力消耗路径(SPFA Java)

目录 1631. 最小体力消耗路径 题目描述&#xff1a; 实现代码与解析&#xff1a; BFSDP 原理思路&#xff1a; 1631. 最小体力消耗路径 题目描述&#xff1a; 你准备参加一场远足活动。给你一个二维 rows x columns 的地图 heights &#xff0c;其中 heights[row][col] 表…

python 爬虫 m3u8 视频文件 加密解密 整合mp4

文章目录 一、完整代码二、视频分析1. 认识m3u8文件2. 获取密钥&#xff0c;构建解密器3. 下载ts文件4. 合并ts文件为mp4 三、总结 一、完整代码 完整代码如下&#xff1a; import requests import re import os from tqdm import tqdm from Crypto.Cipher import AES# 创建临…

通过Jmeter压测存储过程

一、存储过程准备&#xff1a; 1、建立一个空表&#xff1a; 1 CREATE TABLE test_data ( id NUMBER, name VARCHAR2(50), age NUMBER ); 2、建立一个存储过程&#xff1a; CREATE OR REPLACE PROCEDURE insert_test_data(n IN NUMBER) ASBEGIN--EXECUTE IMMEDIATE trunca…

打工人副业变现秘籍,某多/某手变现底层引擎-Stable Diffusion 黑白老照片上色修复

在这个时代,我们习惯于拥有高清、色彩丰富的照片,然而,那些古老的黑白色老照片由于年代的久远,往往会出现模糊、破损等现象。 那么今天要给大家介绍的是,用 Stable Diffusion 来修复老照片。 前段时间 ControlNet 的除了上线了“IP-Adapter”模型以外还增加另一个…

JVM虚拟机系统性学习-对象存活判断算法、对象引用类型和垃圾清除算法

垃圾回收 在 JVM 中需要对没有被引用的对象&#xff0c;也就是垃圾对象进行垃圾回收 对象存活判断算法 判断对象存活有两种方式&#xff1a;引用计数法、可达性分析算法 引用计数法 引用计数法通过记录每个对象被引用的次数&#xff0c;例如对象 A 被引用 1 次&#xff0c…

决策报表布局方式(新建一个绝对布局,双击,在拖其它图表,报表块装进去。就不会变形)

FineReport11.0 1.绝对布局&#xff1a; 只是适合自己调试电脑显示&#xff0c;适用于一个展示区域需要用多个组件叠加组成时使用 2.自适应布局&#xff1a;双向自适应 &#xff1a; https://help.fanruan.com/finereport/doc-view-4276.html 组件会自动调整显示宽度以适应不…

实战React18和TS+Vite,跟进实战阅读类App的心得分享

随着 React 18 的发布&#xff0c;以及 TypeScript 和 Vite 在前端开发领域的普及&#xff0c;使用 React 18 结合 TypeScript 和 Vite 开发实战阅读类 App 的经验已经成为了前端开发者们的热门话题。在本文中&#xff0c;我将分享我的心得体会&#xff0c;并给出一些示例代码&…

12.11_黑马数据结构与算法笔记Java

目录 070 栈 链表实现 概念理清&#xff1a;什么时候是指针的指向&#xff0c;什么时候是元素本身&#xff1f; 071 栈 数组实现 072 栈 e01 有效的括号 072 栈 e02 后缀表达式求值 072 栈 e03 中缀表达式转后缀1 072 栈 e03 中缀表达式转后缀2 072 栈 e03 中缀表达式转…

Linux之进程(三)(环境变量)

目录 一、基本概念 二、环境变量 1、PATH 2、HOME 3、SHELL 三、环境变量参数 四、argc和argv 一、基本概念 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数。如&#xff1a;临时文件夹位置和系统文件夹位置等。环境变量通常…

通用的AGI 安全风险

传统安全风险 平台基础设施安全风险 模型与数据层安全风险 应用层安全风险 平台基础设施安全风险 &#xff08;1&#xff09;物理攻击&#xff1a;机房管控不到位 &#xff08;2&#xff09;网络攻击 &#xff08;3&#xff09;计算环境&#xff1a;自身安全漏洞&#xf…

Java - Mybatis的缓存机制、集成SpringBoot后缓存相关问题

mybaits提供一级缓存&#xff0c;和二级缓存 一级缓存&#xff08;默认开启&#xff09; 一级缓存是SqlSession级别的缓存。在操作数据库时需要构造 sqlSession对象&#xff0c;在对象中有一个(内存区域)数据结构&#xff08;HashMap&#xff09;用于存储缓存数据。不同的sqlSe…

【Java SE】带你识别什么叫做异常!!!

&#x1f339;&#x1f339;&#x1f339;个人主页&#x1f339;&#x1f339;&#x1f339; 【&#x1f339;&#x1f339;&#x1f339;Java SE 专栏&#x1f339;&#x1f339;&#x1f339;】 &#x1f339;&#x1f339;&#x1f339;上一篇文章&#xff1a;【Java SE】带…
最新文章