剑指offer--替换空格

在这里插入图片描述

一.题目描述

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。例如"We are happy."替换为"We%20are%20happy.

算法一:

==算法1:从头到尾遍历,遇到空格把它替换为%20.时间O(n^2),空间O(1) ==

void replaceSpace(char* s)//假定str空间足够,注意力扣需要自己重新定义内存存放新s
{for (int i = 0; s[i] != '\0'; i++){if (s[i] == ' ')//空格{//把i后面的数据后移两个格子(' '变为%20,一个字符变三个字符)for (int j = strlen(s); j > i; j--)s[j + 2] = s[j];//填充%20s[i++] = '%';s[i++] = '2';s[i] = '0';}}
}int main()
{char s[100] = "We are happy.";replaceSpace(s);printf("%s\n", s);return 0;
}

算法二

算法2.重新创建一个新数据用于存放替换后的字符串,时间O(n),空间O(n)

void replaceSpace(char* s)//假定str空间足够,注意力扣需要自己重新定义内存存放新s
{int count = 0;//统计空格的数量int i;for (i = 0; s[i] != '\0'; i++){if (s[i] == ' ')count++;}char* str = (char*)malloc(sizeof(char) * (strlen(s) + 1 + 2 * count));int j = 0;//str下标for (i = 0; s[i] != '\0'; i++){if (s[i] != ' ')str[j++] = s[i];else//空格,需要替换{str[j++] = '%';str[j++] = '2';str[j++] = '0';}}str[j] = '\0';//str为字符串strcpy(s,str);//将str的内容拷贝到s中free(str);
}int main()
{char s[100] = "We are happy.";replaceSpace(s);printf("%s\n", s);return 0;
}

算法3

算法3.统计字符串中空格数量,计算需要后移的字符数,然后从后往前遍历字符串,直接替换.O(n),O(1)

void replaceSpace(char* s)
{int count = 0;int i;for (i = 0; s[i] != '\0'; i++)//统计空格的数量{if (s[i] == ' ')   count++;   }int j = i+count * 2;//移动后的下标   for (; i >= 0; i--)   {if(s[i]!=' ')//不是空格,直接后移   s[j--] = s[i];   else //空格   {s[j--] = '0';   s[j--] = '2';   s[j--] = '%';    }}
}int main()   
{char s[100] = "We are happy.";   replaceSpace(s);   printf("%s\n", s);   return 0;   
}

在这里插入图片描述

本篇完!

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

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

相关文章

FreeRTOS 任务挂起和恢复API函数

FreeRTOS 任务挂起和恢复API函数使用 挂起的作用就是当我们需要暂停某任务时候,等过一段时间在运行,这个时候要是使用删除和重建的方法就会当时任务进行时候的变量保存的值。当需要将这个任务停止运行一段时间的将这个任务挂起,当重新进行运…

安装mysql8,启动mysql服务日志 libstdc++.so.6: wrong ELF class: ELFCLASS32

背景:linux centos7.9安装mysql5.7版本,服务启动成功后被告知要求安装mysql8版本,故卸载之后安装mysql8,后启动mysql服务报错提示:libstdc.so.6: wrong ELF class: ELFCLASS32 解决办法: 1、下载安装包li…

第十八章 算法

一、介绍 1.1 什么是算法 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获…

【力扣一刷】代码随想录day27(39. 组合总和、40.组合总和II、131.分割回文串)

目录 【39. 组合总和】中等题 【40.组合总和II】中等题 【131. 分割回文串】中等题 【39. 组合总和】中等题 思路: 确定终止条件:sum target时记录路径并返回。剪枝:当前节点的路径之和已经大于sum就不可能再等于sum了,结束该分支…

[中级]软考_软件设计_计算机组成与体系结构_03_CPU的组成(运算器与控制器)

CPU的组成 计算机的结构CPU的结构运算器控制器往年真题 计算机的结构 CPU的结构 运算器 算术逻辑单元(ALU):数据的算术运算和逻辑运算累计寄存器(AC):通用寄存器,为ALU提供一个工作区,用在暂存数据数据缓冲寄存器(DR)&#xff1…

期权的常见结构

期权收益图 期权的**收益(payoff)**是指期权到期日时的价值,**期权的损益(profit)**不但包含期权的收益,还包括期权交易开始时发生的期权费。 买入看涨期权 看涨期权买入方,当到期时标的资产…

Python爬虫:爬虫常用伪装手段

目录 前言 一、设置User-Agent 二、设置Referer 三、使用代理IP 四、限制请求频率 总结 前言 随着互联网的快速发展,爬虫技术在网络数据采集方面发挥着重要的作用。然而,由于爬虫的使用可能会对被爬取的网站造成一定的压力,因此&#…

[C++11]可变参数模板

导览&#xff1a; 本章将从可变参数模板的概念开始讲起&#xff0c;到其究竟是如何做到实例化的再从实例出发&#xff0c;探究该如何编写可变参数模板最后涉及可变参数模板的运用 什么是可变参数模板 让我们先见一下可变参数模板 template<typename ...Args> void te…

iOS开发进阶(十一):ViewController 控制器详解

文章目录 一、前言二、UIViewController三、UINavigationController四、UITabBarController五、UIPageViewController六、拓展阅读 一、前言 iOS 界面开发最重要的首属ViewController和View&#xff0c;ViewController是View的控制器&#xff0c;也就是一般的页面&#xff0c;…

《Invariant Feature Learning for Generalized Long-Tailed Classification》阅读笔记

论文标题 《Invariant Feature Learning for Generalized Long-Tailed Classification》 广义长尾分类的不变特征学习 作者 Kaihua Tang、Mingyuan Tao、Jiaxin Qi、Zhenguang Liu 和 Hanwang Zhang 来自南洋理工大学、阿里达摩院和浙江大学 初读 摘要 属性不平衡&#…

行车记录打不开?别慌,数据恢复有高招!

行车记录打不开&#xff0c;这恐怕是许多车主都曾经遭遇过的烦恼。在驾驶途中&#xff0c;行车记录仪本应是记录美好瞬间、保障行车安全的重要工具&#xff0c;但一旦它出现打不开的情况&#xff0c;所有的期待与信赖便瞬间化为乌有。面对这种情况&#xff0c;我们该如何应对&a…

Oracle Solaris 11.3开工失败问题处理记录

1、故障现像 起初是我这有套RAC有点问题&#xff0c;我想重启1个节点&#xff0c;结果发现重启后该节点的IP能PING通&#xff0c;但SSH连不上去&#xff0c;对应的RAC服务也没有自动启动。 操作系统是solaris 11.3。由于该IP对应的主机是LDOM&#xff0c;于是我去主域上telnet…

【linux】基础IO(一)

文件只有站在系统层面才能彻底理解 简单回顾一下文件&#xff1a; 首先我们要明确一点&#xff0c;我们说的打开文件不是写下fopen就打开文件&#xff0c;而是当我们的进程运行起来&#xff0c;进程打开的文件。 我们在C语言一般都会使用过如下的代码进行向文件中写入 但是除…

LLM应用:Prompt flow vs LangChain

背景 Prompt flow和LangChain都是LLM时代&#xff0c;为高效地构建LLM应用而生。 Prompt flow是Microsoft开源的&#xff0c;其诞生时&#xff0c;LangChain已经很有名气了。 所以作为后生的Prompt flow会为我们带来哪些新的东西呢&#xff1f; ​​​​​​​ Prompt flo…

互联网、因特网、万维网的区别

互联网 internet&#xff1a;凡是能彼此通信的设备组成的网络就叫互联网&#xff0c;即使只有两台计算机&#xff0c;无论以何种技术使其彼此通信&#xff0c;都叫互联网。所以&#xff0c;根据互联网的覆盖规模可以分为&#xff1a; 局域网&#xff08;Local Area Network&am…

如何使用potplayer在公网环境访问内网群晖NAS中储存在webdav中的影视资源

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-D7WJh3JaNVrLcj2b {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

黑马鸿蒙笔记 3

目录 11.ArkUI组件-Column和Row 12.ArkUI组件-循环控制 13.ArkUI组件-List 14.ArkUI组件-自定义组件 15.ArkUI组件-状态管理State装饰器 16.ArkUI组件-状态管理-任务统计案例 17.ArkUI组件-状态管理-PropLinkProvideConsume 11.ArkUI组件-Column和Row Colum和Row的交叉…

第三天开始写了

现在的情况 写俩个接口信息 1. 一个修改 2. 一个 删除 发现了一个问题 只有这些参数无法完成修改的 因为这些关联到一个商品表和一个用户表&#xff0c;我们应该查询他们id信息&#xff0c;修改其中的内容&#xff0c;单独根据字符串查看效果可能不好 这里我们提交应该是用…

2024年抖音小店的保证金是多少?真的可以做0元保证金的店铺吗?

大家好&#xff0c;我是电商糖果 2024年想要入驻抖音小店的商家依旧很多&#xff0c;关于小店的保证金问题也有不少人前来咨询。 大家问的最多的是可以开通0元保证金的店铺吗&#xff1f;以及2024年抖音小店保证金是多少&#xff1f; 这里糖果给大家一个个解答。 可以开通0…

基于YOLOv8的绝缘子检测系统

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文摘要&#xff1a;基于YOLOv8的绝缘子小目标检测&#xff0c;阐述了整个数据制作和训练可视化过程 1.YOLOv8介绍 Ultralytics YOLOv8是Ultralytics公司开发的YOLO目标检测和图像分割模型的最新版本。YOLOv8是一种尖端的、最先进的&a…