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

代码随想录刷题Day22

替换数字

这道题比较简单,遇到字母就copy到新的字符数组,如果是遇到数字,就在新字符数组中加入number的字符串。代码如下:

#include<stdio.h>
#include<ctype.h>
#include<string.h>
#define Max 1000000
int main(){char res[6*Max];char s[Max];scanf("%s",s);int k = 0;for(int i = 0;i<strlen(s);i++){if(islower(s[i])){  //如果是小写字母,直接copy过去res[k++] = s[i];}else if(isdigit(s[i])){ //如果是数字的话,把数字设置为number字符串res[k++] = 'n';res[k++] = 'u';res[k++] = 'm';res[k++] = 'b';res[k++] = 'e';res[k++] = 'r';}}printf("%s",res);return 0;
}

我这个做法是常规的,申请一个新数组来存放替换后的结果。但如果想要原地修改的话,这时候对数字的修改就得从后往前进行。

反转字符串中的单词

这道题的重点,我觉得是如何以空格为划分界线,把单词这样一个区域划分出来。大致思路参照代码的注释,以及对于代码的划分思路参照下图:

代码如下:

class Solution {
public:string reverseWords(string s) {char res[10000];int pr = 0; //用于记录res数组的遍历int end = s.size()-1;int begin = s.size()-1; //用于记录每个单词的起始位置和结束位置bool finding = false;      //用于作为现在是否处于锁定单词区域的一个信号标志for(int p = s.size()-1;p>=0;p--){if(s[p]==' ' && finding){  //在finding为true的情况下,遇到空格说明单词划分结束,可以锁定单词的范围begin-endbegin = p+1;for(int i = begin;i<=end;i++){res[pr++]=s[i];}res[pr++]=' ';finding = false;}if(s[p]!=' '&&finding ==false){ //空格结束,遇到非空字符,表示单词划分开始finding = true;end = p;}if(p==0&&finding == true){  //如果p已经遍历到0,但是单词划分还没有主动结束,则强行结束begin = 0;for(int i = begin;i<=end;i++){res[pr++]=s[i];}res[pr++]=' ';}}res[--pr]=NULL; //统一去除字符串尾部的多余空格return string(res);}
};

更省事的方法是使用string.h中的关于字符串处理的split函数,直接以空格作为分隔符返回划分后的第一个首字母,这样迭代提取单词,然后把单词倒序排列。

这道题目在代码随想录中推荐使用的是,原地单词逆转,这里暂时先不看了😜

http://www.lryc.cn/news/606618.html

相关文章:

  • 校园交友|基于SprinBoot+vue的校园交友网站(源码+数据库+文档)
  • JavaScriptAJAX异步请求:XHR、Fetch与Axios对比
  • Trice移植(Start with Trice)
  • 【iOS】retain/release底层实现原理
  • CMake set_source_files_properties使用解析
  • 15. 若依框架的Security Config
  • 微服务消息队列之RabbitMQ,深入了解
  • Docker状况监控
  • 加密与安全
  • Idea集成Jenkins Control插件,在IDEA中触发Jenkins中项目的构建
  • LLM Prompt与开源模型资源(2)提示工程关键技术
  • GaussDB 数据库设计规范
  • JavaScript 高效入门指南:从基础到实战(VSCode 版)
  • 【03】海康MVS V4.3.0 ——安装教程、查看示例、库、头文件、开发指南
  • 应用app的服务器如何增加高并发
  • 解读LISA:通过大型语言模型实现推理分割
  • 【无标题】严谨推导第一代宇宙的创生机制,避免无限回溯问题。
  • alaxea机器人由星海图人工智能科技有限公司研发的高性能仿人形机器人
  • 渗透测试常用指令
  • SpringBoot+Mybatis+MySQL+Vue+ElementUI前后端分离版:日志管理(四)集成Spring Security
  • 如何将消息转移到新 iPhone
  • 1688商品评论API接口逆向分析与数据采集
  • 视频质量检测中卡顿识别准确率↑32%:陌讯多模态评估框架实战解析
  • 2025年文生图模型stable diffusion v3.5 large的全维度深度解析
  • 嵌入式系统中常用通信协议
  • RAGFlow Agent 知识检索节点源码解析:从粗排到精排的完整流程
  • 电脑的时间同步电池坏掉了,每次开机都要调整时间
  • 江协科技STM32 11-4 SPI通信外设
  • 生物医药研究数据分析工具测评:衍因科技如何重塑科研范式?
  • Git Pull 时遇到 Apply 和 Abort 选项?详解它们的含义与应对策略