替换空格:剑指offer05

 此题为简单题,较为好理解,主要是将'  '替换'%20',刚开始自己以为可以自己当读取到字符串为空时就可直接置换为‘%20’但发现结果是只能显示‘%20’的部分。错误结果如下:

 1 char* replaceSpace(char* s){
 2     int n=strlen(s);
 3     int i;
 4  //   char *p=(char *)calloc(3*(n+3),sizeof(char));
 5  //   int size=0;
 6     for(i=0;i<n;i++)
 7     {
 8         if(s[i]==' ')
 9         {
10             s[i]='%20';
11  //           p[size++]='%';
12  //           p[size++]='2';
13  //           p[size++]='0';
14         }
15 
16 //        else
17 //        {
18 //            p[size++]=s[i];
19 //        }
20     }
21     return s;
22 }

后来参考了别人的代码后发现其实字符数组好像只能存储一个字符。

 因此对其进行了修改。重新申请一个动态内存大小为3*(n+3).。

 1 char* replaceSpace(char* s){
 2     int n=strlen(s);
 3     int i;
 4     char *p=(char *)calloc(3*(n+3),sizeof(char));
 5     int size=0;
 6     for(i=0;i<n;i++)
 7     {
 8         if(s[i]==' ')
 9         {
10  //           s[i]='%20';
11             p[size++]='%';
12             p[size++]='2';
13             p[size++]='0';
14         }
15 
16         else
17         {
18             p[size++]=s[i];
19         }
20     }
21     return p;
22 }

结果为:

原文地址:https://www.cnblogs.com/sbb-first-blog/p/13269079.html