面试题5:替换空格 题目链接
char* replaceSpace(char* s){
/* 思路:统计空格数量,为了避免多次复制,从后复制到前,也可从前向后,复制过程中记录已复制空格数量。
时间复杂度 O(n)
空间复杂度 O(n)
*/
if(s == NULL)
return NULL;
int blank = 0;
for(int i = 0;i < strlen(s); i++){
if(s[i] == ' ')
blank += 1;
}
int newlen = strlen(s) + 2*blank;
char* news = malloc(newlen+1);
news[newlen] = '\0';
int i = strlen(s), j = newlen;
while(i >= 0){
if(s[i] == ' '){
news[j] = '0';
news[--j] = '2';
news[--j] = '%';
}
else
news[j] = s[i];
i -= 1;
j -= 1;
}
return news;
}