zoukankan      html  css  js  c++  java
  • 替换空格

    题目描述:

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

    此类型的算法可以适用于很多方面,像数组的合并。思想是从数组的后边向前合并,而不是从前向后。

     1 #include<stdio.h>
     2 #include<string.h>
     3 
     4 void ReplaceBlank(char *string, int length){
     5     if(string == NULL || length  <= 0){
     6         return;
     7     }
     8     int i = 0;
     9     int isSpace = 0;
    10     int len = strlen(string);
    11     
    12     while(string[i] != ''){
    13         if(string[i] == ' '){
    14             ++isSpace;                                 //求出有多少个空格
    15         }
    16         ++i;
    17     }
    18     
    19     int newLen = len + 2 * isSpace;                    //每添加一个“%20”数组会向后移动两个空格(已经有一个空格了),newLen表示新数组的空间
    20 //    printf("%d
    ", newLen);
    21     
    22     int indexLen = newLen;
    23     
    24     while(indexLen > len && len >= 0){                 //从后向前,每遇到一个空格就向数组里添加“%20”
    25         if(string[len] == ' '){
    26             string[indexLen--] = '0';
    27             string[indexLen--] = '2';
    28             string[indexLen--] = '%';
    29         }
    30         else{
    31             string[indexLen--] = string[len];
    32         //    len--;
    33         //    indexLen--;
    34         }
    35         len--;
    36     } 
    37 }
    38 
    39 int main(){
    /*
      测试数据
    */
    40 char p[1000000]; 41 fgets(p, sizeof(p)-1, stdin); 42 ReplaceBlank(p, 2); 43 puts(p); 44 return 0; 45 }
  • 相关阅读:
    GDI+ 支持的图片文件格式
    Linux学习-灾难复原的考虑
    Linux学习-备份策略
    Linux学习-备份的种类、频率与工具的选择
    Linux学习-备份要点
    Linux学习-服务器硬件数据的收集
    Linux学习-系统基本设定
    Linux学习-开机过程的问题解决
    Linux学习-Boot Loader: Grub2
    Linux学习-核心与核心模块
  • 原文地址:https://www.cnblogs.com/dormant/p/5300968.html
Copyright © 2011-2022 走看看