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 ) { 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