版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_41923658/article/details/86485639
题目:请实现一个函数,把字符串中的每个空格替换成"%20"。例如输入“We are happy.”,则输出“We%20are%20happy.”。
代码如下:
class Solution {
public:
void replaceSpace(char *str,int length) {
//检查字符串输入的合法性
if(str==nullptr||length<=0)
return ;
//字符串的实际长度
int originalLength=0;
//空格的数量
int numberofblank=0;
//字符串的游标
int i=0;
//计算字符串的实际长度和空格数
while(str[i]!='\0') //当字符不为结束字符时
{
++originalLength;
if(str[i]==' ')
++numberofblank;
++i;
}
//计算替换之后的字符串长度
int newLength=originalLength+numberofblank*2;
//当新串长度大于字符数组的总容量,则不能复制
if(newLength>length)
return ;
/*********替换空格***************/
int indexoforiginal=originalLength;
int indexofnew=newLength;
while(indexoforiginal>=0&&indexofnew>indexoforiginal)
{
if(str[indexoforiginal]==' ')
{
str[indexofnew--]='0';
str[indexofnew--]='2';
str[indexofnew--]='%';
}
else
{
str[indexofnew--]=str[indexoforiginal];
}
--indexoforiginal;
}
}
};
扫码关注微信公众号,欢迎技术交流,其中含有大量免费的人工智能、图像处理、IT资料: