替换空格的几种解法
发布日期:2021-10-02 06:27:33
浏览次数:2
分类:技术文章
本文共 1698 字,大约阅读时间需要 5 分钟。
题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
题目分析
字符串存在数组中,一个空格替换后需要多出2
个存储位置,我们加以分析,会有以下两种情况:
case1:不在原来的字符串上替换
如果原来的字符串的存储空间非常有限,我们需要另外开辟一个足够大的数组,将原来数组里的内容复制过来,并在遇到空格时换成指定字符,这样的话需要比较多的额外空间。
为避免浪费更多的存储空间,我们应先遍历字符串,以找到字符串中空格的个数,从而申请额外的存储空间(替换一个空格需要多出2
个存储位置),实现代码如下:
class Solution { public: void replaceSpace(char *str,int length) { int i,j,count=0; for(i=0;i
运行时间:4ms占用内存:612k
可以看出这种解法对空间的要求比较高
case2:在原来的字符串上替换
当初始给定的字符串数组有比较多的内存空间时,有两种解法可供参考:
解法1:常规解法
遇到空格就替换,然后将后面的依次挪过去(挪2
位),这样的话时间复杂度会特别大,不推荐
class Solution { public: void replaceSpace(char *str,int length) { int i,j,count; for(i=0,j=0;ii+2;j--){ str[j]=str[j-2]; } str[i]='%'; str[++i]='2'; str[++i]='0'; } } }};
运行时间:4ms占用内存:492k
解法2:低复杂度解法
先遍历一遍数组,计算出有多少个空格,然后我们就可以知道数组里每个元素最终的存储位置了,因为我们所要替换的值的长度是一定的
那么我们可以倒着来,直接从最后一个填,一直填到第一个就行,遇到空格按照02%
的顺序替换,我们需要两个指针以完成交换,代码如下:
class Solution { public: void replaceSpace(char *str,int length) { int i,j,count=0; for(i=0;i=0;i--,j--){ if(str[j]==' '){ str[i]='0'; str[--i]='2'; str[--i]='%'; }else{ str[i]=str[j]; } } }};
运行时间:3 ms 占用内存:504K
Python简单解决
而使用Python语言就可以简单解决这个问题:
# -*- coding:utf-8 -*-class Solution: # s 源字符串 def replaceSpace(self, s): # write code here r='' for i in s: if(i==' '): r+='%' r+='2' r+='0' else: r+=i return r
运行时间: 20ms 占用内存: 5752KB
转载地址:https://blog.csdn.net/Jeaten/article/details/107906779 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月01日 23时00分45秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PHP session回收机制
2019-04-27
最新的全球编程语言,操作系统,web服务器等使用率分析报告
2019-04-27
用C语言写PHP扩展
2019-04-27
PHP Extension programming
2019-04-27
海量数据处理
2019-04-27
PHP防止注入攻击
2019-04-27
多路IO复用模型 select epoll 等
2019-04-27
Linux Epoll介绍和程序实例
2019-04-27
output_buffering详细介绍
2019-04-27
php缓冲 output_buffering和ob_start
2019-04-27
php error_reporting 详解
2019-04-27
剖析PHP中的输出缓冲
2019-04-27
HTTP响应头不缓存
2019-04-27
PHP安装扩展mcrypt以及相关依赖项 【PHP安装PECL扩展的方法】
2019-04-27
Javascript到PHP加密通讯的简单实现
2019-04-27
德国SNS交友/视频网站Poppen.de的技术架构分享
2019-04-27
UNIX环境编程
2019-04-27
一笔画问题【数据结构-图论】
2019-04-27
红黑树
2019-04-27
安装多个gcc
2019-04-27