题目
题解
第一想法
这个题用c解的话需要注意:c语言中的字符串其实是字符数组+‘\0’,所以不可以直接将空格替换成’%20’。
原本字符串最大长度是10000,因此最坏情况下替换后长度为30000+1(结束符)的长度。因此需要malloc的内存大小为sizeof(char)*30001
正确题解
char* replaceSpace(char* s){
char* ret = (char*)malloc(sizeof(char) * 30001);
int size = 0;
for(int i=0;i<strlen(s);i++){
if(s[i]==' '){
ret[size++]='%';
ret[size++]='2';
ret[size++]='0';
}else{
ret[size++]=s[i];
}
}
ret[size]='\0';
return ret;
}
这里需要注意使用size++而不是++size