ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

替换空格:剑指offer05

2020-07-08 20:35:36  阅读:271  来源: 互联网

标签:空格 char 20 int offer05 replaceSpace calloc strlen 替换


 

 此题为简单题,较为好理解,主要是将'  '替换'%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 }

结果为:

 

标签:空格,char,20,int,offer05,replaceSpace,calloc,strlen,替换
来源: https://www.cnblogs.com/sbb-first-blog/p/13269079.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有