替换空格

题目描述:

请实现一个函数,将一个字符串中的空格替换成“%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 }

 

posted @ 2016-03-21 10:52  Dormant  阅读(183)  评论(0编辑  收藏  举报