题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解:根据代码提示,传入类中的参数: 字符串地址str 和 字符串长度length,length没有什么用,通过对字符串的结束标志:\0 判断是否结束判断字符串长度!
思路:从前往后记录空格数量,从后往前替换空格。引入两个指针newNum和originalNum,分别指向原来字符串的尾部和变长后字符串的尾部。
- 注意:字符串的最后一个字符是‘\0’;
- 统计总长度:newLen=num+2*numSpace;
- 引入变量注意初始化。
void replaceSpace(char *str,int length)
{
//边界判断
if(str==NULL||length<1)
return ;
//从前往后统计空格数量
int num=0;
int num_space=0;
while(str[num]!='\0'){
if(str[num]==' ')
num_space++;
num++;
}
int newNum=num+2*num_space;
int originalNum=num;
//边界判断
if(newNum>length)
return ;
//从后往前字符替换
while(newNum!=originalNum){
if(str[originalNum]==' '){
str[newNum--]='0';
str[newNum--]='2';
str[newNum--]='%';
}
else
str[newNum--]=str[originalNum];
originalNum--;
}
}