本文参考该作者文章:
作者:Hawstein
出处:http://hawstein.com/posts/ctci-solutions-contents.html
一.Q:写一个函数,把字符串中所有的空格替换为%20 。
思路:
int *replace1(char[],int):首先计算字符串中的空格的数量,新字符串的长度应该是多2cnt数量的长度(每个空格替换为%20需要增加2个字符,x个空格增加2x个字符)。申请一个额外数组,将原数组复制到新数组即可。
replace2(char[],int):如果原数组长度够大,可以从后向前将字符串复制到原数组中。
CODE:
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 char * replace1(char a[],int l) 5 { 6 int i,j=0,cnt=0; 7 for(i=0;i<l;i++) 8 { 9 if(a[i]==' ') 10 cnt++; 11 } 12 char *t=malloc((l+2*cnt+1)*sizeof(char)); 13 for(i=0;i<l;i++) 14 { 15 if(a[i]==' ') 16 { 17 t[j++]='%'; 18 t[j++]='2'; 19 t[j++]='0'; 20 } 21 else 22 t[j++]=a[i]; 23 } 24 t[j]='