博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
替换空格
阅读量:5099 次
发布时间:2019-06-13

本文共 1235 字,大约阅读时间需要 4 分钟。

题:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

 

 题意:注意这里有两种意思,一是可以创建新的字符串,二是在原字符串上修改

思路:第一种情况,只要从左到右遍历字符串,将空格换成"%20"即可,第二种,因为替换以后字符串长度会变化,所以要注意原字符串的长度是否足够。针对第二种解题步骤如下:

一、遍历一遍字符串,找到现字符串的长度和空格长度,这样就可以计算出替换以后的新字符串的长度;

二、定义两个指针,一个指向新字符串的最后,一个指向现有的最后,注意现有字符串中的'\0'也要复制过去

三、从右往左遍历现有字符串,将非空格的字符复制到新的位置,遇到空格替换即可。

代码如下:

1 class Solution { 2 public: 3     void replaceSpace(char *str,int length)  4     { 5         if(str==nullptr||length<=0)    return; 6         int oldLen=0; 7         int numOfBlank=0; 8         int i=0; 9         while(str[i] !='\0')10         {11             ++oldLen;12             if(str[i]==' ')13                 numOfBlank++;14             i++;15         }16         int newLen=oldLen+numOfBlank*2;  //新长度17         if(length
=0)           //‘\0’也要复制19 {20 if(str[oldLen]==' ')21 {22 str[newLen--]='0';23 str[newLen--]='2';24 str[newLen--]='%';25 }26 else27 {28 str[newLen--]=str[oldLen];29 }30 oldLen--;31 }32 }33 };

 //length为字符串str的总容量。着重注意从后往前的思路。

转载于:https://www.cnblogs.com/love-yh/p/7356756.html

你可能感兴趣的文章
IO流写出到本地 D盘demoIO.txt 文本中
查看>>
Screening technology proved cost effective deal
查看>>
mysql8.0.13下载与安装图文教程
查看>>
Thrift Expected protocol id ffffff82 but got 0
查看>>
【2.2】创建博客文章模型
查看>>
Kotlin动态图
查看>>
从零开始系列之vue全家桶(1)安装前期准备nodejs+cnpm+webpack+vue-cli+vue-router
查看>>
Jsp抓取页面内容
查看>>
大三上学期软件工程作业之点餐系统(网页版)的一些心得
查看>>
可选参数的函数还可以这样设计!
查看>>
[你必须知道的.NET]第二十一回:认识全面的null
查看>>
Java语言概述
查看>>
关于BOM知识的整理
查看>>
使用word发布博客
查看>>
面向对象的小demo
查看>>
微服务之初了解(一)
查看>>
GDOI DAY1游记
查看>>
收集WebDriver的执行命令和参数信息
查看>>
数据结构与算法(三)-线性表之静态链表
查看>>
mac下的mysql报错:ERROR 1045(28000)和ERROR 2002 (HY000)的解决办法
查看>>