替换空格

Introduction

Question:替换空格

Analysis

这道题如果用一些高级语言写的话,会很简单,像是Python的话,直接 replace 就好了,而如果是 C 这种的话,就有些技巧可言了。由于不能直接在字符串中修改,所以需要先创建一个足够长的字符串来保存结果,然后再进行replace,而这个字符串的长度需要提前计算出来,即统计现有空格个数,假设原字符串长度为 size,空格个数为 space,那么替换后的字符串长度为size + space * 2

Implement

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
char* replaceSpace(char* s ) {
// write code here
int space = 0, i;
for(i = 0;s[i];i++) space += (s[i] == ' ');
char* res = (char*)malloc(sizeof(char)*(2*space + i));
int j = 0;
for(i = 0;s[i];i++) {
if (s[i] == ' ') {
res[j++] = '%';
res[j++] = '2';
res[j++] = '0';
} else res[j++] = s[i];
}
res[j] = '\0';
return res;
}

One More Thing