替换空格

Posted CodeDancer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了替换空格相关的知识,希望对你有一定的参考价值。

题目描述:

请实现一个函数,将一个字符串中的空格替换成“%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] != \0){
13         if(string[i] ==  ){
14             ++isSpace;                                 //求出有多少个空格
15         }
16         ++i;
17     }
18     
19     int newLen = len + 2 * isSpace;                    //每添加一个“%20”数组会向后移动两个空格(已经有一个空格了),newLen表示新数组的空间
20 //    printf("%d\n", 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 }

 

以上是关于替换空格的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer——替换空格

题目四:替换空格

2.替换空格

替换空格为%20

5.替换空格

剑指offer:替换空格