本题最大的困难是如何在不新建新的数组下完成空格替换,主要考察数组指针的运用

思路:(1)找出字符串空格的长度,从而确定新的子串尾指针的位置所在;

(2)通过遍历找出空格,string[indexOfNew--]依次附上%20三个字符,indexOfOriginal--

注:并没有通过实际指针而是通过字符串下标操作,起始时均指向末尾位置

 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 /*
 *Author xsf
 *剑指offer,替换空格
 */
 //求出传入数组的空格长度
 int GetBankLen(char str[])
 {
     ;
     char *p = str;
     while(*p!='\0')
     {
         if(*p==' ')
             BankNum++;
         p++;
     }
     return BankNum;
 }
 /*置换空格的函数
 length是字符数组string的总容量
 */
 void ReplaceBlank(char string[],int length)
 {
     )//安全性判断
         return;
     int BankNum = GetBankLen(string);//获取输入string的空格数目
     ; //移动数组后的总长度
 //    char *str1 = string+length-1;//第一个指针指向数组的最后\0位置
 //    if(*str1 =='\0')
 //        printf("指向了最后的\0");
 //    char *str2 = string+newLength-1;//第二个指针指向替换后的最后\0位置
     /*移动指针*/
     int indexOfOriginal = length;
     int indexOfNew = newLength;
     &&indexOfNew>indexOfOriginal)
     {
         if(string[indexOfOriginal]==' ')//当遇到空格,则在新的加上%20
         {
 //            printf("遇到空格/n");
             ';
             ';
             string[indexOfNew--] = '%';
         }
         else
             {
                 string[indexOfNew--] = string[indexOfOriginal];
             }
         indexOfOriginal--;

     }
 }

 int main(int argc,char *argv[])
 {
     char string[] = "X S F";
     int Totallen = sizeof(string)/sizeof(char);//包含/0
 //    int Strlen = strlen(string);//不包含/0
     printf("替换前%s\n",string);
     ReplaceBlank(string,Totallen);
     printf("替换后%s\n",string);
 //    printf("len=%d\n",Totallen);
 //    printf("str=%d\n",Strlen);
 //    int BankNum = GetBankLen(string);
 //    printf("空格长度为%d\n",BankNum);

 }

剑指offer面试题4 替换空格(c)的更多相关文章

  1. 剑指offer面试题4 替换空格(java)

    注:利用java中stringBuilder,append,length方法很方便的解决字符串问题 /* * 剑指offer 替换空格 * xsf * */ /*开始替换空格的函数,length为原数 ...

  2. 剑指Offer:面试题4——替换空格(java实现)

    问题描述:请实现一个函数,把字符串中的每个空格替换成"%20". 例如: 输入:"We are happy." 输出:"We%20are%20happ ...

  3. C++版 - 剑指offer 面试题4: 替换空格 题解

    面试题4:替换空格 提交网址: http://www.nowcoder.com/practice/4060ac7e3e404ad1a894ef3e17650423?tpId=13&tqId=1 ...

  4. 剑指Offer编程题2——替换空格

    剑指Offer编程题2——替换空格 题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happ ...

  5. 剑指Offer - 九度1510 - 替换空格

    剑指Offer - 九度1510 - 替换空格2013-11-29 20:53 题目描述: 请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之 ...

  6. 剑指offer第二版-5.替换空格

    面试题5:替换空格 题目要求: 实现一个函数,把字符串中的每个空格都替换成“%20”,已知原位置后面有足够的空余位置,要求改替换过程发生在原来的位置上. 思路: 首先遍历字符串求出串中空格的数量,求出 ...

  7. 剑指offer(2)替换空格

    题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 题目分析 我们如果要替换空格,两步 ...

  8. 剑指offer【02】- 替换空格(Java)

    题目:替换空格 考点:字符串 题目描述: 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. ...

  9. 剑指Offer(4)——替换空格

    题目: 请实现一个函数,把字符串中的每个空格替换成"%20".例如输入“We are happy.”,则输出“We%20are%20happy.”. 思路: 如果按照顺序从前往后依 ...

随机推荐

  1. [HNOI2009]有趣的数列

    题目描述 我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件: (1)它是从1到2n共2n个整数的一个排列{ai}: (2)所有的奇数项满足a1<a3<...<a2n ...

  2. 【USACO】 洞穴奶牛

    题目描述 贝西喜欢去洞穴探险.这次她去的地方由 N 个洞穴组成,编号分别是 1 到 N,1 号洞穴是出发 的起点. 洞穴之间由 M 条隧道相连,双向通行,第 i 条隧道连接 A i 和 B i .每条 ...

  3. 【LSGDOJ 2015】数页码

    题目描述 一本书的页码是从 1-n 编号的连续整数:1, 2, 3, ... , n.请你求出全部页码中所有单个数字的和,例如第 123 页,它的和就是 1+2+3=6. 输入 一行为 n(1 < ...

  4. hdu 5340 (manacher)

    Sample Input 2 abc abaadada   Sample Output Yes No 判断是否能成为3个非空回文子串 manacher算法求出个点回文长度,在找出第一个和最后一个保存下 ...

  5. [Noi2016]优秀的拆分

    来自F allDream的博客,未经允许,请勿转载,谢谢. 如果一个字符串可以被拆分为 AABB 的形式,其中 A和 B是任意非空字符串,则我们称该字符串的这种拆分是优秀的. 例如,对于字符串 aab ...

  6. 基于Mapxtreme for JAVA的电子地图设计与实现

    基于Mapxtreme for JAVA的电子地图设计与实现学生毕业设计,适合测绘类专业研究目标:        开发一个基于MapXtreme for JAVA的校园电子地图项目,使用MapInfo ...

  7. ubuntu 16.04 安装 tensorflow-gpu 包括 CUDA ,CUDNN,CONDA

    ubuntu 16.04 安装 tensorflow-gpu 包括 CUDA ,CUDNN,CONDA 显卡驱动装好了,如图: 英文原文链接: https://github.com/williamFa ...

  8. BigData-‘基于代价优化’究竟是怎么一回事?

    本文由  网易云发布. 本文具体讨论了Join基础算法的一种优化方案  – Runtime Filter,在本文最后还引申地聊了聊谓词 下推技术.同时,在本文文章开头,笔者引出了两个问题,SQL执行引 ...

  9. jdk1.7和jdk1.8区别

    转自:http://www.2cto.com/kf/201307/225968.html 本文是我学习了解了jdk7和jdk8的一些新特性的一些资料,有兴趣的大家可以浏览下下面的内容. 官方文档:ht ...

  10. 关于ES7中的async/await在客户端和服务端上的实践

    一.前言 在项目中经常遇到处理异步请求的情况,面对层层的嵌套,回调显示那么苍白无力: async / await是ES7的重要特性之一,也是目前社区里公认的优秀异步解决方案,既然这样就用上吧. 二.配 ...