1. #include <stdio.h>
  2.  
  3. void ReplaceBlank(char string[],int length){
  4. if(string == NULL || length == 0){
  5. return;
  6. }
  7.  
  8. int originalLength = 0;//
  9. int blankCount = 0;
  10.  
  11. while(string[originalLength] != '\0'){
  12. if(string[originalLength] == ' '){
  13. ++blankCount;
  14. }
  15. ++originalLength;
  16. }
  17.  
  18. int newLength = originalLength + blankCount * 2;
  19.  
  20. if(newLength > length){//not enough space
  21. return;
  22. }
  23.  
  24. int indexFirst = originalLength;
  25. int indexSecond = newLength;
  26. while(indexFirst>=0 && indexSecond>indexFirst){
  27. if(string[indexFirst] == ' '){
  28. string[indexSecond--] = '0';
  29. string[indexSecond--] = '2';
  30. string[indexSecond--] = '%';
  31. }else{
  32. string[indexSecond--] = string[indexFirst];
  33. }
  34. --indexFirst;
  35. }
  36. }
  37.  
  38. int main(){
  39. char str[50] = "We are happy.";
  40. printf("str = %s\n",str);
  41.  
  42. ReplaceBlank(str,50);
  43. printf("str = %s\n\n",str);
  44.  
  45. char str1[50] = "Wearehappy.";
  46. printf("str1 = %s\n",str1);
  47.  
  48. ReplaceBlank(str1,50);
  49. printf("str1 = %s\n\n",str1);
  50.  
  51. char str2[50] = " We are happy.";
  52. printf("str2 = %s\n",str2);
  53.  
  54. ReplaceBlank(str2,50);
  55. printf("str2 = %s\n\n",str2);
  56.  
  57. char str3[50] = "";
  58. printf("str3 = %s\n",str3);
  59.  
  60. ReplaceBlank(str3,50);
  61. printf("str3 = %s\n\n",str3);
  62.  
  63. return 0;
  64. }

结果

  1. str = We are happy.
  2. str = We%20are%20happy.
  3.  
  4. str1 = Wearehappy.
  5. str1 = Wearehappy.
  6.  
  7. str2 = We are happy.
  8. str2 = %%%20We%20are%20happy.
  9.  
  10. str3 =
  11. str3 =

剑指offer 04_替换字符串中的空格的更多相关文章

  1. 【剑指offer】替换字符串中的空格

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/25002199 剑指offer上的第四道题目,在九度OJ上測试通过,但还是有些问题.由于是用 ...

  2. 【剑指offer】将字符串中的空格替换成"%20"

    #include <iostream> #include <string> using namespace std; char *ReplaceSpace(char *str, ...

  3. 剑指Offer 找出字符串中第一个只出现一次的字符

    题目描述 找出字符串中第一个只出现一次的字符 如果无此字符 请输出'.' 输入描述: 输入一串字符,由小写字母组成 输出描述: 输出一个字符 输入例子: asdfasdfo 输出例子: o 思路:数组 ...

  4. 《剑指offer》-找到字符串中第一个只出现一个的字符

    题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出 ...

  5. 代码随想录第八天 |344.反转字符串 、541. 反转字符串II、剑指Offer 05.替换空格 、151.翻转字符串里的单词 、剑指Offer58-II.左旋转字符串

    第一题344.反转字符串 编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 s 的形式给出. 不要给另外的数组分配额外的空间,你必须原地修改输入数组.使用 O(1) 的额外空间解决这 ...

  6. 《剑指offer》替换空格

    本题来自<剑指offer> 替换空格 题目: 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are% ...

  7. 剑指 Offer 44. 数字序列中某一位的数字 + 找规律 + 数位

    剑指 Offer 44. 数字序列中某一位的数字 Offer_44 题目描述 题解分析 java代码 package com.walegarrett.offer; /** * @Author Wale ...

  8. 菜鸟刷题路:剑指 Offer 05. 替换空格

    剑指 Offer 05. 替换空格 class Solution { public String replaceSpace(String s) { StringBuilder str = new St ...

  9. 力扣 - 剑指 Offer 67. 把字符串转换成整数

    题目 剑指 Offer 67. 把字符串转换成整数 思路1 根据题意,要解决这题,首先要判断的条件有: 不包括首位空格 第一位必须为:+.-.数字三者其一,否则不合法 数字必须连续的,如果遇到非数字, ...

随机推荐

  1. 使用struts碰到的错误

    这种错误更有可能url中路径写错了. 而这种情况更有可能使struts.xml写错了.特别要注意action的属性值class的编写是否正确.

  2. java对象流(二)

    对象流,可以将java中的对象转为字节进行输出.将对象写入文件时.文件输出流是将字节写入到文件中. 对象流是将给定的对象转化为一组字节.writeObject()方法就是将对象转为字节. 对象流,读的 ...

  3. review09

    String类在java.lang包中,由于java.lang包中的类被默认引入,所以可以直接使用String类.String对象的创建可以直接使用带字符串参数的构造方法 String s = new ...

  4. mysql数据库优化课程---2、命令其实也就是那几个单词

    mysql数据库优化课程---2.命令其实也就是那几个单词 一.总结 一句话总结: 比如show,use,alter 1.开启和关闭mysql服务? Windows下:net start/stop m ...

  5. R语言基础入门之二:数据导入和描述统计

    by 写长城的诗 • October 30, 2011 • Comments Off This post was kindly contributed by 数据科学与R语言 - go there t ...

  6. substr 方法

    substr 方法 返回一个从指定位置开始,并具有指定长度的子字符串. 参数 start 必选.所需的子字符串的起始位置.字符串中第一个字符的索引为 0. length 可选项.返回的子字符串中包含的 ...

  7. Webstorm2016使用技巧——SVN插件使用(svnToolBox)

    1. 安装SVN 我这里使用的是TortoiseSVN-1.9.4.27285-x64-svn-1.9.4,安装过程需要注意的是,默认安装没有选择”command line client tools” ...

  8. List集合添加自定义对象

    public class Student { private String name; private int age; public Student() { super(); } public St ...

  9. db2生成连续日期

    //生成时间段内连续日期 select * from ( select date('2008-01-01') + (row_NUMBER() over () -1) days AS datennn f ...

  10. C# 如何将对象写入文件

    http://wenku.baidu.com/link?url=QwDRlO1TeoubnmtUOitXXTRa-eZ6QFKvEuyXyzLXD9c0qCRUV5TL9Fq7_HqvxrMcwsAL ...