替换空格

题目:

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

 

代码:

 1 void replaceSpace(char *str,int length) {
 2         if(str == nullptr){
 3             return;
 4         }
 5         int numOfBlank = 0;
 6         int originalLength = 0;
 7         for(int i = 0; str[i] != '\0'; i++){
 8             originalLength++;
 9             if(str[i] == ' '){
10                 ++numOfBlank;
11             }
12         }
13         int newLength = 2*numOfBlank + originalLength;
14         if(newLength+1 > length){
15             return;
16         }
17         char* oldStringPtr = str + originalLength;
18         char* newStringPtr = str + newLength;
19         while(oldStringPtr < newStringPtr ){
20             if(*oldStringPtr == ' '){
21                 *newStringPtr-- = '0';
22                 *newStringPtr-- = '2';
23                 *newStringPtr-- = '%';
24                 
25             }else{
26                 *newStringPtr-- = *oldStringPtr;
27             }
28             --oldStringPtr;
29         }
30             
31     }

之前一直运行不出结果,总是在报错误,找了半天终于发现问题所在了

 if(*oldStringPtr == ' '){
21                 *newStringPtr-- = '0';
22                 *newStringPtr-- = '2';
23                 *newStringPtr-- = '%';
24                 
25             }else{
26                 *newStringPtr-- = *oldStringPtr;
27             }
28             --oldStringPtr;

  这里的if   else 运用有错误。主要是自己逻辑不清,把if和else的情况弄得不是很清楚。这里的else必须有,是用来排除if下的情况

其他时候if else 可以不同时写的情况是,每个代码块都有自己的if  要不要else 无所谓。要是单独的代码块不加上else 就会默认运行。切记切记额


 

posted @ 2019-03-09 16:45  Howardwang  阅读(153)  评论(0)    收藏  举报