c++实现字符串中空格替换成三个字符

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

题目描述:请实现一个函数,把字符串中的每个空格替换成“%20”。例如,输入“We are happy.”,则输出“We%20are%20happy.”。

看到这个题目的时候我们首先想到的是,从前向后遍历,每找到一个空格就把这个空格替换成%20,但是空格只有一个字符,%20 有三个字符,这样替换的时候势必要将数组中的元素向后移动。而且有些字符还被不止移动一次,
假设字符串长度是n,对每个空格字符,需要移动后面O(n)个字符,因此对于含有O(n)个空格字符的字符串而言,总的时间效率是O(nxn),有没有时间复杂度不是这么高的方法呢?

时间复杂度为O(n)的解法:
1.首先确定我们的字符串中有多少个空格,每一个空格要替换成三个字符,则需要增加两个字符的空间,最后形成的字符串的大小就等于原来字符串的长度加上2乘以空格数目。则上例中最后字符串的长度是18.
2.准备连个指针,p1和p2。p1指向原始字符串的末尾,p2指向替换之后的字符串的末尾。
在这里插入图片描述
3.向前移动指针p1,逐个把它指向的字符复制到p2指向的位置,直到碰到第一个空格为止。如下图所示,阴影部分为复制过的字符。
在这里插入图片描述
4.直到遇到一个空格,p1向前移动1格,在p2之前插入字符串“%20”。p2向前移动三格。
在这里插入图片描述
5.同理替换其他的空格。

代码实现:

void ReplaceBlank(char* str, int length)/
C++ 读入整行带空格字符串,并将字符串按照特定符号划分成多个子串     在处理输入的时候,有时需要输入一整行字符串,而字符串中包含类似空格,tab这样的特殊符号,直接用cin读入时不能得到预期效果,这里介绍一下C++中的整行字符串读入方法。istream& getline (istream& is, string& str, char delim); istream& getline (istream&& is... 阅读详情

相关推荐

面试算法题——将一个字符串中的空格替换成“ %20”

题目要求:请实现一个函数,将一个字符串中的空格替换成“%20”。 例如,当字符串为"This  is test program. "则经过替换之后的字符串为"This%20%20is%20test%20program."   思路1:java——利用API中自带的replaceAll方法来实现替换。 首先来了解一下java.lang.String下的replace方法和replace方法都...

Ysunflower的博客 3938

C++实现将一个字符串中的字符替换成另一个字符串的方法

本文实例讲述了C++实现将一个字符串中的字符替换成另一个字符串的方法,分享给大家供大家参考。具体方法如下: 题目要求: 原地实现字符串中的每个空格替换成” ″,例如输入”We are happy”, 输出”We are happy” 被替换字符串当然不仅仅是空格,上面只是个例子 这是道很好的题目,也是百度面试中的一道题,题目不难,但是问题得考虑全面。这里给出如下实现代码: #include #include #include using namespace std; int findNumberFirst(const

实现一个函数,把字符串中的每个空格替换成“%20”

/************************************************************************ 题目:请实现一个函数,把字符串中的每个空格替换成“%20”。 例如输入“We are happy.”,则输出“We%20are%20happy.”。 分析 将长度为1的空格替换为长度为3的“%20”,字符差的产度长。 如果允许我们开辟一个新的数组来存

聚精会神搞建设 3884

wps或word中如何将个字宽度名字批量改成三个字宽度名字

wps或word中如何将个字宽度名字批量改成三个字宽度名字

weixin_45013035的博客 1万+

C++实现字符串分割并转换成数字

#include<iostream> #include<string> #include<algorithm> #include<vector> using namespace std; void split(const std::string &s, char delimiter, std::vector<std::string&...

Hesy_H的博客 2575

c++分割字符串

种方法,用库函数strtok和find函数,直接上代码 #include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;cstring&gt; using namespace std; vector&lt;string&gt; split1(const string &amp;str,const string &amp;pat...

abc15766228491的博客 386

C++ 字符串

C++ 字符串 C++ 提供了以下种类型的字符串表示形式: C 风格字符串 C++ 引入的 string 类类型 C++ 大大增强了对字符串的支持,除了可以使用C风格的字符串,还可以使用内置的 string 类。string 类处理起字符串来会方便很多,完全可以代替C语言中的字符数组或字符串指针。 C 风格字符串 C 风格的字符串起源于 C 语言,并在 C++ 中继续得到支持。字符串实际上是使用 null 字符 '\0' 终止的一维字符数组。因此,一个以 null 结尾的字符串,包..

cnds123的专栏 2万+

字符串 将一个字符串中的空格替换成

/* 题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”。 例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 */ /* 分析 将长度为1的空格替换为长度为3的“%20”,字符差的产度长。 如果允许我们开辟一个新的数组来存放替换空格后的字符串, 那么这道题目就非常简 单。设置个指针分别指向新旧字符串首元素, 遍历原字符串,如果碰到...

weixin_42627035的博客 1311

实现一个函数,将一个字符串中的每个空格替换成其他。

实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 1.C++实现 #include <iostream> #include<stdio.h> #include<string.h> using namespace std; class Solution{...

qq_41510590的博客 1545

字符串中出现的空格替换成0x20

  背景,在网络编程中,如果URL参数含有特殊字符,如空格,#等,可能导致服务器端无法获得正确的参数值。我们需要将这些特殊符号转换成服务器可以识别的字符。转换的规则是在%后面跟上ASCII码的位十六进制数表示,比如空格的ASCII码是32,即十六进制的20,因此空格替换成%20。再比如#的ASCII码为35,即十六进制的23,它在URL中被替换为%23。思路:我们采用在源字符串上做替换,最重要...

仰望星空 1481

【编程练习题】将一个字符串中的空格替换成20%

/* 题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”。 例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 */ /* 分析 将长度为1的空格替换为长度为3的“%20”,字符差的长度长。 如果允许我们开辟一个新的数组来存放替换空格后的字符串, 那么这道题目就非常简 单。设置个指针分别指向新旧字符串首元素, 遍历原字符串...

LearnLHC的博客 1172

程序员面试题目:请实现一个函数,把字符串中的每个空格替换成"%20"。

题目:请实现一个函数,把字符串中的每个空格替换成"%20"。例如输入“We are happy.”,则输出“We%20are%20happy.”。时间复杂度为O(n2)的解法,不足以拿到Offer现在我们考虑怎么做替换操作。最直观的做法是从头到尾扫描字符串,每一次碰到空格字符的时候做替换。由于是把1个字符替换成3个字符,我们必须要把空格后面所有的字符都后移个字节,否则就有字符被覆盖了。举...

测试0901-1 7154

字符串空格替换——C实现

题目:输入一个字符串,将自定义的字符串中的空格替换成输入的字符串。 程序分析: (1)查找空格时,从前往后查找。 (2)替换空格时,先计算需要多少空间,然后从后往前移动,则每个字符只为移动一次,这样效率更高一点。 C代码: #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> void ReplaceSpace(char *str, in...

ling08140814的博客 794

实现一个函数,把字符串中的每个空格替换成“20%”。

思路:我们从字符串的末尾开始复制和替换。           1、定义个指针,p1和p2。p1指向原始字符串的末尾,p2指向替换字符串的末尾。           2、向前移动指针p1,逐个把它指向的字符复制到p2指向的位置,直到碰到第一个空格为止。碰到第一个空格后,p1向前移动一格,然后在p2之前插入字符串“20%”。同时也要把p2向前移动3格。           3、重复第2步,直

wanglelelihuanhuan的专栏 4127

以下程序段的功能是:将字符串str中的所有空格都删除。_剑指Offer(二) 替换空格...

题目描述java直接调用函数java实现功能c++实现功能题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。java直接调用函数java里面有可以直接使用的函数replace(),直接写成下面这样即可通过,但是这样真的没有意思啊。???publicStringrepla...

weixin_39532628的博客 3355

c语言替换一个字符串中的单词,C++实现将一个字符串中的字符替换成另一个字符串的方法...

本文实例讲述了C++实现将一个字符串中的字符替换成另一个字符串的方法,分享给大家供大家参考。具体方法如下:题目要求:原地实现字符串中的每个空格替换成"%20",例如输入"We are happy", 输出"We%20are%20happy"被替换字符串当然不仅仅是空格,上面只是个例子这是道很好的题目,也是百度面试中的一道题,题目不难,但是问题得考虑全面。这里给出如下实现代码:#include #...

weixin_39520353的博客 1579

字符串替换空格

1.本题知识点    字符串 2. 题目描述   请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 3. 思路    这个题用java和python写可能会比较简单,因为都有现成的内置函数可用,C++的话需要考虑算法的效率。    Java版本: public static void ma...

守得云开见月明 409

c++怎么输入带有空格字符串_码蜂说算法 替换空格

题目:请实现一个函数,把字符串中的每个空格替换成"%20"。例如输入“We are happy.”,则输出“We%20are%20happy.”。首先,我们的应该想到, 这个字符串替换后,原来一个长度的空格替换%20后,是三个长度,因此,这个字符串长新字符串长度= 原来长度 + 空格数*2如果在原来的字符串替换,那势必会覆盖该字符后面的字符内存。因此,这个地方有种解法。要么...

weixin_39877805的博客 144

hive 字符串替换指定字符_字符串替换空格

给「代码随想录」一个星标吧!❝遇到对字符串或者数组做填充或删除的操作时,都要想想从后向前操作怎么样。❞题目:剑指Offer 05.替换空格实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = "We are happy."输出:"We%20are%20happy."思路如果想把这道题目做到极致,就不要只用额外的辅助空间了!首先扩充数组到每个空格替换成"%20...

weixin_36057013的博客 5105
上一篇: c++实现合并两个无序数组并以从大到小的顺序排序
下一篇: c++实现关于链表问题的面试题(链表的基本操作+从尾到头打印链表+链表中倒数第k个节点)(一)
程序媛皮皮虾
博客等级 码龄8年 11粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值