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

思路:(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. ●Joyoi 收集邮票

    题链: http://www.joyoi.cn/problem/tyvj-2325题解.1: 期望dp,(平方的期望不等于期望的平方...) 在这个题上坑了好久,也算是对期望的理解又深了一些. 很好的 ...

  2. 2015 多校联赛 ——HDU5375(dp)

    Sample Input 2 00?0 1 2 4 8 ???? 1 2 4 8   Sample Output Case #1: 12 Case #2: 15 ?部分可以是0  or  1,将二进制 ...

  3. java9学习之模块化

    截止到目前JDK的版本已经更新到10了,虽然java9的生命周期才半年,但是我认为这个版本带来的变革是不可磨灭的,它是第一次深层次的针对架构以及依赖上的革新.下面我们就来学习一下. 一.模块化项目构建 ...

  4. SpringCloud学习之soa基础

    一.soa简单介绍 1)面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来.SOA是解决复杂业务模块,提高扩展性,维护性,可伸缩 ...

  5. cmake 没有那个目录

    问题:bash: /usr/bin/cmake: 没有那个文件或目录 因为直接使用cmake系统回到默认的/usr/bin中去寻找,但是src中安装的cmake是在/usr/local/bin中,所以 ...

  6. sharepoint环境安装

    SharePoint 2013 测试环境安装配置指南 软件版本 Windows Server 2012 标准版 SQL Server 2012 标准版 SharePoint Server 2013 企 ...

  7. Linux必备操作vim

    vim被称作为编辑器之神,那么在我们操作linux系统时,进行编辑操作有没有感觉心有余而力不足?今天我讲自己总结的一些vim的操作命令和大家进行一下分享,有不足之处还请指出. vim的三种模式大家还记 ...

  8. 关于一些基础的Java问题的解答(七)

    31. 反射的作用与原理 简单的来说,反射机制其实就是指程序在运行的时候能够获取自身的信息.如果知道一个类的名称或者它的一个实例对象, 就能把这个类的所有方法和变量的信息(方法名,变量名,方法,修饰符 ...

  9. Redis学习汇总

    [Redis教程目录] 1.redis是什么 2.redis的作者何许人也 3.谁在使用redis 4.学会安装redis 5.学会启动redis 6.使用redis客户端 7.redis数据结构 – ...

  10. 学习ASP.NET Core Razor 编程系列七——修改列表页面

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...