码迷,mamicode.com
首页 > 其他好文 > 详细

替换空格

时间:2016-03-21 11:55:30      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:

题目描述:

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

 

替换空格

标签:

原文地址:http://www.cnblogs.com/dormant/p/5300968.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!