先计算出空格总数,进而计算出替换之后的新字符串的总长度。
class Solution {
public:
void replaceSpace(char *str,int length) { //"length"为字符数组str的总容量
if(str==nullptr||length<=0) return; //str为空指针或者字符数组容量为0的情况
int spacenum=0,strlength=0;
for(int i=0;str[i]!='\0';i++){
strlength++;
if(str[i]==' ') spacenum++; // ' '代表空格,中间有一空格;''代表空。
}
int newlength=strlength+2*spacenum;
int i=newlength; //结尾符号'\0'也要转移,所有这里的i和下面的j都没有减1
for(int j=strlength;j>=0;j--){
if(str[j]!=' '){
str[i]=str[j];
i--;
}
else{
str[i--]='0';
str[i--]='2';
str[i--]='%';
}
}
}
};

京公网安备 11010502036488号