题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
分析:先计算字符串中空格个数n,字符串长度加2*n。然后从后往前复制字符串,字符串末尾会有’\0’,复制时从length-1开始,遇到空格按从后往前的顺序分别替换为0、2、%。
class Solution {
public:
void replaceSpace(char *str,int length) {
char *temp=str;
if(str==NULL|length<=0){
return;
}
int n=0;
for(int i=0;i<length;i++){
if(str[i]==' ')
n++;
}
int j=length+2*n-1;
for(int i=length-1;i>=0;i--){//这里的i和j要同时减1或者同时不减
if(temp[i]==' '){
str[j--]='0';
str[j--]='2';
str[j--]='%';
}
else{
str[j--]=temp[i];
}
}
}
};