替换空格replaceSpace C++/C版本
- 题目描述
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路分析
第1步:检测出空格的个数(可以考虑下是从前往后检测,还是从后往前检测哪个好)
第2步:将空格替换为%20,注意原先是有个空格,新字符串后只是增加了2个空格
代码块
#include<bits/stdc++.h>
using namespace std;
void replaceSpace(char *str,int length) {
//检测字符串是不是空字符串或者字符长度为0
if(str==NULL||length<=0)//length==0--->length<=0
return;
//统计字符串中的空字符的个数
int blanknum=0;//空格字符数量
int newlen=0;//定义新的字符串长度
int oldlen=0;
for(int i=0;str[i]!='\0';i++)
{
oldlen++;
if(str[i]==' ')
blanknum++;
}
newlen=oldlen+2*blanknum;//新的字符串长度
//因为原先有个空格,所以只需要乘以2,不是3
//替换空格字符
//需要判断新的字符串长度是否大于oldlen
if(newlen>length)//length是给的数组最大长度
return;
for(int i=oldlen;i>=0;i--)
{
//小于的话进行替换
if(str[i]!=' ')
str[newlen--]=str[i];
else
{
str[newlen--]='0';
str[newlen--]='2';
str[newlen--]='%';
}
}
}
int main()
{
char str[50]="Welcome to my home!";
replaceSpace(str,50);
printf("%s\n",str);
return 0;
}